c++ - QT HTTP 获取请求 SSL 错误

标签 c++ qt ssl

我只是尝试使用 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,因为我不需要使用它。

谢谢!

最佳答案

我也遇到了同样的问题。这是对我有用的解决方案。

  1. 从本站下载安装包
    http://slproweb.com/products/Win32OpenSSL.html
  2. 将其安装到任何位置。
  3. 将 OpenSSL DLL 复制到 OpenSSL 二进制文件 (\bin) 目录。
  4. 将 libeay32.dll、libssl32.dll 和 ssleay32.dll 从\bin 文件夹复制到 QtNetwork4.dll 或 QtNetworkd4.dll 所在的同一位置。

希望对您有所帮助! :)

关于c++ - QT HTTP 获取请求 SSL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41516679/

相关文章:

c++ - 如何将一个 qApplication 的 GUI 嵌入到另一个 qApplication 的 mainWindow 中?

python - 如何使用 PyQt4.QtWebKit 从选项列表中选择值

ssl - 添加 SSL 后自定义 TeamSpeak IP 不再工作

c++ - 将 char 字节转换为整数值

c++ - 需要一些关于 r 值概念的帮助

c++ - QtQuick2 无法将 ApplicationWindow 关闭信号连接到方法(C++ 新手)

mysql - fabric-ca-server 使用 ssl 连接到 mysql

c++ - 查找 imapi2 com 对象的 uuid/ header 或获取 __uuidof 以在 mingw 上工作

android - 在 Qt Android 中在哪里进行最后一分钟的清理?

php - 与 fritzbox 的 Ubuntu cUrl/OpenSSL 握手失败