Witam piszę program przy pomocy QT 5.5.1 w IDE 3.6.0 Platforma Win10
Przy pomocy WebKit i mam błędy ładując stronę szyfrowaną SSL
qt.network.ssl: QSslSocket: cannot call unresolved function SSLv23_client_method
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_CTX_new
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_library_init
qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error
qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error
Błędy mam na kilku stronach z grą np. https://pl.elvenar.com/
Wypluwa błąd i nic dalej nie ładuje.
Podstawowy projekt wygląda tak - to tylko szkic, minimum do działania.
main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
MainWindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QNetworkReply>
#include <QSslError>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
QString url = ui->lineEdit->text();
ui->webView->load(url);
QSslConfiguration sslconf = QSslConfiguration::defaultConfiguration();
QList<QSslCertificate> cert_list = sslconf.caCertificates();
QList<QSslCertificate> cert_new = QSslCertificate::fromData("CaCertificates");
cert_list += cert_new;
sslconf.setCaCertificates(cert_list);
sslconf.setProtocol(QSsl::AnyProtocol);
QSslConfiguration::setDefaultConfiguration(sslconf);
connect(ui->webView->page()->networkAccessManager(),
SIGNAL(sslErrors(QNetworkReply*, const QList<QSslError> & )),
this,
SLOT(handleSslErrors(QNetworkReply*, const QList<QSslError> & )));
}
void MainWindow::handleSslErrors(QNetworkReply* reply, const QList<QSslError> &errors)
{
qDebug() << "handleSslErrors: ";
foreach (QSslError e, errors)
{
qDebug() << "ssl error: " << e;
}
reply->ignoreSslErrors();
}
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QtWebKit/QtWebKit>
#include <QMessageBox>
#include <QWebElement>
#include <QWebFrame>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_pushButton_clicked();
void handleSslErrors(QNetworkReply* reply, const QList<QSslError> &errors);
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
.pro
#-------------------------------------------------
#
# Project created by QtCreator 2016-02-01T01:46:19
#
#-------------------------------------------------
QT += core gui webkit webkitwidgets
QT += network
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = WebTest
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
Kod kompilowany pod Mac Os X - działa i wczytuję strony ssl, pod windowsem wczytuje wszystkie strony nie szyfrowane i tylko niektóre szyfrowane.
Proszę o pomoc w tej sprawie bo już ręce opadają.
Biblioteki mam w
C:\Qt\Tools\mingw492_32\opt\bin\libeay32.dll
C:\Qt\Tools\mingw492_32\opt\bin\ssleay32.dll
Dodatkowo doinstalowałem
OpenSSL Win32
Dziękuje serdecznie za pomoc..
Pozdrawiam.