首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QSslSocket返回无效的url

QSslSocket返回无效的url
EN

Stack Overflow用户
提问于 2014-03-28 00:25:53
回答 1查看 166关注 0票数 0

我正在拼命地尝试设置QSslSocket连接,我尝试从黑莓样本开始,但总是在我的控制台上得到一个无效的网址错误,没有任何细节…下面是我尝试运行的代码:

代码语言:javascript
复制
    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样本工作...

EN

回答 1

Stack Overflow用户

发布于 2014-03-28 00:44:28

这是客户端上的一个示例SSL连接。我通过这个代码连接到"www.blackberry.com",443:

代码语言:javascript
复制
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();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22693553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档