[英]QT HTTP Get Request SSL Error
我只是嘗試使用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,因為我不需要使用它。
謝謝!
我也遇到了同樣的問題。 這是適合我的解決方案。
我希望這有幫助! :)
是一些QT窗口的bug,如果你使用qt mingw gcc 32bit,復制到你的Windows應用程序可執行位置ssleay32.dll和libeay32.dll。 在我的情況下是:Qt \\ Qt5.8.0 \\ Tools \\ mingw530_32 \\ opt \\ bin \\ ssleay32.dll Qt \\ Qt5.8.0 \\ Tools \\ mingw530_32 \\ opt \\ bin \\ libeay32.dll
networkManager
在中聲明
`MainWindow::sendGetRequest()`,
執行后
`sendGetRequest()`,
networkManager
被破壞了,然后就是了
finished(QNetworkReply*)
信號不會發出。
您應該將networkManager
聲明為MainWindow
的成員。 或者考慮將其存儲在堆中
( auto networkManger = new NetworkManager(this)
),
如果它只創建一次。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.