簡體   English   中英

如何處理QSslSocket:無法解決TLSv1_1_client_method錯誤

[英]How to handle QSslSocket: cannot resolve TLSv1_1_client_method error

我正在嘗試開發一個程序,可以連接到谷歌地圖,並使用谷歌地圖GPS參數獲取地圖。 所以我有一個問題,當我編譯代碼並單擊運行按鈕時,我在應用程序輸出中看到這些錯誤:

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,但仍然沒有。

MY 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));
}

非常感謝。

這些警告在運行時加載OpenSSL庫時由Qt(特別是Qt網絡)打印,但未在其中找到上述功能(可能是因為找到的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支持 ,了解如何執行此操作)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM