我只是尝试使用 HTTP URL 发送 GET 请求,但我收到了这两个 SSL 错误:
> qt.network.ssl: QSslSocket: cannot call unresolved function d2i_DHparams
> qt.network.ssl: QSslSocket: cannot call unresolved function DH_free
我正在使用带有 QTCreator (QT v5.8) 的 Windows 10,并且我知道默认情况下 QT 不导入 SSL 库。但是,我发送的是 HTTP 请求而不是 HTTPS,那么为什么我会收到 SSL 错误?
这是产生错误的代码片段:
void MainWindow::sendGetRequest(QString& url)
{
QNetworkAccessManager networkManager;
QNetworkRequest request;
QUrl httpRequest(url);
request.setUrl(httpRequest);
currentReply = networkManager.get(request);
ui->label_2->setText("Request Sent...");
connect(&networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(onGetRequestResult(QNetworkReply*)));
}
void MainWindow::onGetRequestResult(QNetworkReply * reply)
{
if (reply->error() != QNetworkReply::NoError) {
ui->label_2->setText("Get Request Error!");
return;
}
QString data = (QString) reply->readAll();
qDebug() << data;
}
标签更改为 Request Sent...
后立即抛出错误,永远不会调用插槽 onGetRequestResult()
。
另外,我已经下载了两个 SSL 二进制文件,但这并没有改变任何东西,有没有办法为 GET 请求禁用 SSL,因为我不需要使用它。
谢谢!
最佳答案
我也遇到了同样的问题。这是对我有用的解决方案。
- 从本站下载安装包
http://slproweb.com/products/Win32OpenSSL.html - 将其安装到任何位置。
- 将 OpenSSL DLL 复制到 OpenSSL 二进制文件 (\bin) 目录。
- 将 libeay32.dll、libssl32.dll 和 ssleay32.dll 从\bin 文件夹复制到 QtNetwork4.dll 或 QtNetworkd4.dll 所在的同一位置。
希望对您有所帮助! :)
关于c++ - QT HTTP 获取请求 SSL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41516679/