Название: HTTPS POST Request
Отправлено: ti0 от Ноябрь 10, 2015, 22:08
Написал класс, который отправляет post запрос на web сервис и возвращает ответ. Все работает, но только до того момента, пока не используется https. В нете ничего нету, Qt воовбще поддерживает https с ssl?
Название: Re: HTTPS POST Request
Отправлено: Aleksey_A от Ноябрь 10, 2015, 22:47
да, QNetworkRequest, QNetworkReply вполне работают с https. Примерно так: mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H
#include <QMainWindow> #include <QNetworkAccessManager> #include <QNetworkReply>
namespace Ui { class MainWindow; }
class MainWindow : public QMainWindow { Q_OBJECT
public: explicit MainWindow(QWidget *parent = 0); ~MainWindow();
private slots: void on_pushButton_clicked(); void httpFinished();
private: Ui::MainWindow *ui;
QNetworkAccessManager networkManager; QNetworkReply *reply; };
#endif // MAINWINDOW_H mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h" #include <QUrl>
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); } //--------------------------------------------- MainWindow::~MainWindow() { delete ui; } //--------------------------------------------- void MainWindow::on_pushButton_clicked() { QUrl url("https://www.yandex.ru"); QNetworkRequest request; request.setUrl(url);
reply = networkManager.get(request); reply->ignoreSslErrors(); connect(reply, SIGNAL(finished()),this, SLOT(httpFinished())); } //--------------------------------------------- void MainWindow::httpFinished() { if (reply->error() != QNetworkReply::NoError) { qDebug() << QString("error: %1 (%2)").arg(reply->error()).arg(reply->errorString()); } else { QString answer = reply->readAll(); qDebug() << answer; }
reply->deleteLater(); }
По поводу игнорирования ошибок SSL можно глянуть в документации на QNetworkReply::ignoreSslErrors(const QList<QSslError> & errors) Я в примере использовал метод get, но у QNetworkAccessManager есть и post.
|