Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 14.08.2017, 01:00   #1
semerkin
Новичок
 
Регистрация: 12.08.2017
Сообщений: 4
Репутация: -3
По умолчанию 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 там уже используются. Как быть в такой ситуации?
semerkin вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не открывает https holmesfemale Windows 1 13.10.2013 07:18
Socks5 и https TreadProblem PHP 0 13.12.2012 18:57


07:10.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru