да, 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.