|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.08.2017, 00:00 | #1 |
Новичок
Джуниор
Регистрация: 12.08.2017
Сообщений: 4
|
qt, https, qsslsocket
============================= Заголовочник ========================
#ifndef DOWNLOADER_H #define DOWNLOADER_H #include <QObject> #include <QUrl> #include <QNetworkAccessManager> #include <QNetworkRequest> #include <QNetworkReply> #include <QFile> #include <QDebug> #include <QtNetwork/QSslCertificate> #include <QtNetwork/QSslKey> #include <QSslSocket> #include <QSsl> class Downloader : public QObject { Q_OBJECT private: QNetworkAccessManager* m_pnam; public: explicit Downloader(QObject *parent = 0); void download(const QUrl& ); signals: void downloadProgress(qint64 ,qint64 ); void done(const QUrl& ,const QByteArray& ); void error(); public slots: private slots: void slotFinished(QNetworkReply* ); }; #endif // DOWNLOADER_H =========================== срр файл ======================= #include "downloader.h" Downloader::Downloader(QObject *parent) : QObject(parent) { m_pnam = new QNetworkAccessManager(this); connect(m_pnam, SIGNAL(finished(QNetworkReply*)), this, SLOT(slotFinished(QNetworkReply*))) ; } void Downloader:ownload(const QUrl &url) { QNetworkRequest request(url); QNetworkReply* pnr = m_pnam->get(request); connect(pnr, SIGNAL(downloadProgress(qint64, qint64)), this, SIGNAL(downloadProgress(qint64,qint 64))); } void Downloader::slotFinished(QNetworkRe ply* pnr) { QFile file("C:/Users/WINNER/Desktop/test.txt"); file.open(QIODevice::WriteOnly); QByteArray barr; barr.resize(50000); barr = pnr->readAll(); file.write(barr); pnr->deleteLater(); } =============================== main =================================== = #include <QCoreApplication> #include <downloader.h> #include <QSsl> #include <QSslSocket> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); Downloader download1(0); QString qstr = "https://otvet.mail.ru/301"; download1.download(QUrl(qstr)); return a.exec(); } Если передаю http ссылки то работает на ура. https уже проблема. В консоле пишет 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 Читал много форумов и инструкций как подключить OpenSSL и ничего не помогло, поэтому решение видится через QsslSocket, потому что как я понимаю "механизмы" TLS/SSL там уже используются. Как быть в такой ситуации? |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
не открывает https | holmesfemale | Windows | 1 | 13.10.2013 07:18 |
Socks5 и https | TreadProblem | PHP | 0 | 13.12.2012 18:57 |