8 HttpRequest() : operation(QNetworkAccessManager::GetOperation), offset(0) {}
10 QNetworkAccessManager::Operation operation;
13 QMap<QByteArray, QByteArray> headers;
16 class HttpReply : public QObject {
20 HttpReply(QObject *parent = nullptr) : QObject(parent) {}
21 virtual QUrl url() const = 0;
22 virtual int statusCode() const = 0;
23 int isSuccessful() const { return statusCode() >= 200 && statusCode() < 300; }
24 virtual QString reasonPhrase() const { return QString(); }
25 virtual const QList<QNetworkReply::RawHeaderPair> headers() const {
26 return QList<QNetworkReply::RawHeaderPair>();
28 virtual QByteArray header(const QByteArray &headerName) const {
33 virtual QByteArray body() const = 0;
36 void data(const QByteArray &bytes);
37 void error(const QString &message);
38 void finished(const HttpReply &reply);
43 static Http &instance();
44 static const QMap<QByteArray, QByteArray> &getDefaultRequestHeaders();
45 static void setDefaultReadTimeout(int timeout);
49 void setRequestHeaders(const QMap<QByteArray, QByteArray> &headers);
50 QMap<QByteArray, QByteArray> &getRequestHeaders();
51 void addRequestHeader(const QByteArray &name, const QByteArray &value);
53 void setReadTimeout(int timeout);
54 int getReadTimeout() { return readTimeout; }
56 QNetworkReply *networkReply(const HttpRequest &req);
57 virtual HttpReply *request(const HttpRequest &req);
59 request(const QUrl &url,
60 QNetworkAccessManager::Operation operation = QNetworkAccessManager::GetOperation,
61 const QByteArray &body = QByteArray(),
63 HttpReply *get(const QUrl &url);
64 HttpReply *head(const QUrl &url);
65 HttpReply *post(const QUrl &url, const QMap<QString, QString> ¶ms);
66 HttpReply *post(const QUrl &url, const QByteArray &body, const QByteArray &contentType);
69 QMap<QByteArray, QByteArray> requestHeaders;
73 class NetworkHttpReply : public HttpReply {
77 NetworkHttpReply(const HttpRequest &req, Http &http);
79 int statusCode() const;
80 QString reasonPhrase() const;
81 const QList<QNetworkReply::RawHeaderPair> headers() const;
82 QByteArray header(const QByteArray &headerName) const;
83 QByteArray body() const;
87 void replyError(QNetworkReply::NetworkError);
88 void downloadProgress(qint64 bytesReceived, qint64 bytesTotal);
93 QString errorMessage();
99 QNetworkReply *networkReply;
100 QTimer *readTimeoutTimer;