gpt4 book ai didi

c++ - 如何处理QSslSocket : cannot resolve TLSv1_1_client_method error

转载 作者:可可西里 更新时间:2023-11-01 18:35:44 25 4
gpt4 key购买 nike

我正在尝试开发一个可以连接到谷歌地图并使用谷歌地图 GPS 参数获取 map 的程序。所以我有一个问题,当我编译代码并单击运行按钮时,我在应用程序输出中看到这些错误:

QSslSocket:无法解析 TLSv1_1_client_method

QSslSocket:无法解析 TLSv1_2_client_method

QSslSocket:无法解析 TLSv1_1_server_method

QSslSocket:无法解析 TLSv1_2_server_method

我在谷歌上搜索了很多但找不到任何答案,我也尝试安装 open-ssl v1.0.1 和 v .98 但仍然一无所获。

我的Qt版本:Qt Creator 3.0.1 基于Qt 5.2.1

这是我的代码:

主窗口.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QUrl>
#include <QNetworkRequest>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QString>
#include <QPixmap>


namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();

private slots:
void on_pushButton_clicked();
void imageloaded(QNetworkReply *);
private:
Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

主窗口.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);

}

MainWindow::~MainWindow()
{
delete ui;
}

void MainWindow::on_pushButton_clicked()
{

QString gmurl;
gmurl = "http://maps.googleapis.com/maps/api/staticmap?center=35.704465,51.409597&zoom=16&size=600x600&sensor=false&markers=color:red%7Clabel:S%7C35.704465,51.409597" ;
QUrl url(gmurl);
QNetworkRequest request(url);
QNetworkAccessManager manager;
manager.get(request);
connect(&manager,SIGNAL(finished(QNetworkReply*)),this,SLOT(imageloaded(QNetworkReply*)));




}

void MainWindow::imageloaded(QNetworkReply *reply){


QByteArray data = reply->readAll();
reply->deleteLater();
QPixmap pixmap;
pixmap.loadFromData(data);
ui->label->setPixmap(pixmap.scaled((600,600),Qt::KeepAspectRatio));
}

非常感谢。

最佳答案

这些警告由 Qt(特别是 Qt Network)在运行时加载 OpenSSL 库时打印,但在其中找不到上述功能(可能是因为找到的 OpenSSL 库太旧)。它们本质上意味着 Qt 是使用支持 TLS v1.1、v1.2 的 OpenSSL 版本编译的,但是在您的系统上找到的 OpenSSL 库只支持最高 TLS v1.0。

警告本身并不致命(TLS 1.0 仍被认为是安全的,大多数服务器会接受它),但暗示您的应用程序捆绑了过时的 OpenSSL 库,或者依赖于在某处查找 libeay32.dll、ssleay32.dll在系统上(在 PATH 中)。

如果您想避免这些警告,请将最新的 libeay32.dll、ssleay32.dll 与您的应用程序一起提供,或者让 Qt 在 openssl 中静态链接(请参阅 Qt 文档中的 Enabling and Disabling SSL Support 了解如何执行此操作) .

关于c++ - 如何处理QSslSocket : cannot resolve TLSv1_1_client_method error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24041118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com