簡體   English   中英

QSslSocket返回無效的URL

[英]QSslSocket return Invalid url

我拼命嘗試設置QSslSocket連接,我嘗試從blackberry示例開始,但始終在控制台上收到無效URL錯誤而沒有任何詳細信息...這是我嘗試運行的代碼:

    if (!m_socket) {

    bool res;
     Q_UNUSED(res);
    m_socket = new QSslSocket();

    // Connect to signals to receive notifications
    // about state changes

    res = QObject::connect(m_socket,
                SIGNAL(sslErrors(QList<QSslError>)),
                this,
                SLOT(onSslErrors(QList<QSslError>)));

    Q_ASSERT(res);

    res = QObject::connect(m_socket,
            SIGNAL(stateChanged(QAbstractSocket::SocketState)),
            this,
            SLOT(onSocketSateChange(QAbstractSocket::SocketState)));
    Q_ASSERT(res);

    res = QObject::connect(m_socket,
                    SIGNAL(error ( QAbstractSocket::SocketError)),
                    this,
                    SLOT(onError(QAbstractSocket::SocketError)));
            Q_ASSERT(res);

    res = QObject::connect(m_socket, SIGNAL(encrypted()),
            this,
            SLOT(onSocketEncrypted()));
    Q_ASSERT(res);

    res = QObject::connect(m_socket, SIGNAL(readyRead()),
            this,
            SLOT(onSocketReadyRead()));
    Q_ASSERT(res);


}

// Make the SSL connection to the host on the specified port
m_socket->connectToHostEncrypted("www.blackberry.com", 443);

 /* if (!m_socket->waitForEncrypted()) {
    qDebug() << m_socket->errorString();
    //return 1;
}
 */
 }

如果有人可以幫助或向我顯示ssl示例工作...

這是客戶端上的示例SSL連接。 我通過以下代碼連接到“ www.blackberry.com” 443:

SSLClient::SSLClient(QObject *parent)
{

    if (!QSslSocket::supportsSsl())
       QMessageBox::information(0, "Secure Socket Client",
                 "This system does not support OpenSSL.");

    client_socket.setProtocol(QSsl::SslV3);

    connect( &client_socket, SIGNAL(error(QAbstractSocket::SocketError)),
            this, SLOT(TCPError(QAbstractSocket::SocketError)) );

    connect( &client_socket, SIGNAL(sslErrors(QList<QSslError>)),
            this, SLOT(sslError(QList<QSslError>)) );

    connect( &client_socket, SIGNAL(readyRead()),
            this, SLOT(tcpReady()) );

    connect( &client_socket, SIGNAL(encrypted()),
             this, SLOT(enable_client()) );

    client_socket.abort();
    client_socket.connectToHostEncrypted("www.blackberry.com", 443 );


}


void SSLClient::tcpReady()
{
    QByteArray array = client_socket.read( client_socket.bytesAvailable() );
    QString str;


    QTextCodec *codec = QTextCodec::codecForName("UTF-16");
    QTextDecoder  *decoderWithoutBom = codec->makeDecoder(QTextCodec::IgnoreHeader );
    str  = decoderWithoutBom->toUnicode(array);

}

void SSLClient::sslError(QList<QSslError> errors)
{

    client_socket.ignoreSslErrors();

}

void SSLClient::TCPError(QAbstractSocket::SocketError error)
{

    QMessageBox::warning( this, tr("Error"),client_socket.errorString() );

    client_socket.disconnectFromHost();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM