如何处理QSslSocket:无法解析TLSv1

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

QSslSocket:无法解析TLSv1_1_client_method

QSslSocket:无法解析TLSv1_2_client_method

QSslSocket:无法解析TLSv1_1_server_method

QSslSocket:无法解析TLSv1_2_server_method

我googled了很多,但不能找到任何答案,我也试图安装open-ssl v1.0.1和v .98,但仍然没有。

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

这是我的代码:

MainWindow.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

Mainwindow.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文档中的启用和禁用SSL支持以了解如何执行此操作)。

链接地址: http://www.djcxy.com/p/79453.html

上一篇: How to handle QSslSocket: cannot resolve TLSv1

下一篇: Documenting descriptions on Complex Types