我只是尝试使用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的Windows 10(QT v5.8),我知道默认情况下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,因为我不需要使用它。
谢谢!
答案 0 :(得分:0)
我也遇到了同样的问题。这是适用于我的解决方案。
我希望这有帮助! :)
答案 1 :(得分:0)
是否有一些QT窗口错误,如果您使用qt mingw gcc 32bit,请复制到您的Windows应用程序可执行位置ssleay32.dll和libeay32.dll。在我的情况是: Qt的\ Qt5.8.0 \工具\ mingw530_32 \选择\ BIN \ ssleay32.dll Qt的\ Qt5.8.0 \工具\ mingw530_32 \选择\ BIN \的libeay32.dll
答案 2 :(得分:-1)
networkManager
在
`MainWindow::sendGetRequest()`,
执行后
`sendGetRequest()`,
networkManager
被破坏,然后就是
finished(QNetworkReply*)
信号不会发出。
您应该将networkManager
声明为MainWindow
的成员。
或者考虑将其存储在堆
(auto networkManger = new NetworkManager(this)
),
如果只创建一次。