【发布时间】:2014-07-30 03:29:59
【问题描述】:
我已经查看了在 Qt 中忽略 SSL 握手错误的几种不同尝试,但我没有得到任何工作。我正在使用自签名证书,在开发过程中我只想忽略任何错误,以防我必须更改证书或发生其他事情。
我看过:
http://qt-project.org/doc/qt-5/qnetworkaccessmanager.html#sslErrors
https://qt-project.org/forums/viewthread/17456
Weird Qt SSL issue -- error "No Error" shows up, nothing else, and if I ignore it, everything works
http://www.qtcentre.org/threads/48736-Ignore-SSL-Errors
http://xizhizhu.blogspot.se/2010/08/basic-samples-for-ssl-communication.html
这是我的请求代码
mManager = new QNetworkAccessManager(this);
... // adding onRequestComplete slot and creation of postdata and request
QObject::connect(mManager, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)), this, SLOT(onSslError(QNetworkReply*, QList<QSslError>)));
QNetworkReply *reply = mManager->post(request, postData);
//QObject::connect(reply, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(onSslError(QList<QSslError>)));
如您所见,我已尝试连接到 networkmanager 信号和回复信号。这是我的插槽:
void onSslError(QList<QSslError> errors) {
QNetworkReply *reply = qobject_cast<QNetworkReply *>(sender());
reply->ignoreSslErrors();
}
void onSslError(QNetworkReply* r, QList<QSslError> l) {
r->ignoreSslErrors();
}
当我发出正常的 HTTP 请求时。将请求中的 QUrl 更改为 https 会导致我的问题。我在 onRequestComplete 插槽中遇到的错误是“无法启动 SSL 上下文”。
我尝试在两个插槽中设置断点,它们永远不会触发,在我看来,ignoreSslErrors 调用永远不会执行。非常感谢任何帮助。
【问题讨论】:
标签: qt ssl signals-slots