我有个问题。我已经制作了一个连接到https网站的Qt应用程序。 在我的工作机器上,一切正常。当我尝试在干净的Windows 7计算机上测试我的应用程序时,我发现了以下问题:
安装完毕后 新鲜的Win7机器 (安装所有更新),在启动我的应用程序后,我得到了一个 SSL握手失败错误,SIGNAL(sslErrors(QNetworkReply *,QList))发出两个空错误字符串, error = QSslError :: NoError。 我一整天都在搜索为什么会发生这种情况,也可以通过示例\ network \ securesocketclient \ release \ securesocketclient和域“google.com”重现它。
现在,我发现,一旦我开始访问Internet Explorer https://www.google.com,我的应用程序也按预期工作,没有进一步的握手错误。
顺便说一句,您访问的网站并不重要 - 这与google.com无关。
有人可以向我解释为什么会这样吗?它是OpenSSL或Qt中的错误,还是两者兼而有之?
UPDATE
我为自己找到了解决这个问题的方法,实现了以下忽略逻辑:
QSslError ignoreNOErrors(QSslError::NoError);
foreach(QSslError error, errors)
if(error.error() != QSslError::NoError)
qDebug() << error.errorString();
QList<QSslError> expectedSslErrors;
expectedSslErrors.append(ignoreNOErrors);
reply->ignoreSslErrors(expectedSslErrors);
谢谢