QSslSocket返回无效的网址

时间:2014-03-27 16:25:53

标签: qt blackberry-10 qnx

我拼命想要设置QSslSocket连接,我尝试从黑莓样本开始,但总是在我的控制台上收到无效的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样本的工作......

1 个答案:

答案 0 :(得分:0)

这是客户端的SSL连接示例。我通过以下代码连接到&#34; www.blackberry.com&#34;,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();
}