8 HttpRequest() : operation(QNetworkAccessManager::GetOperation), offset(0) {}
10 QNetworkAccessManager::Operation operation;
13 QMap<QByteArray, QByteArray> headers;
18 static Http &instance();
19 static const QMap<QByteArray, QByteArray> &getDefaultRequestHeaders();
20 static void setDefaultReadTimeout(int timeout);
24 void setRequestHeaders(const QMap<QByteArray, QByteArray> &headers);
25 QMap<QByteArray, QByteArray> &getRequestHeaders();
26 void addRequestHeader(const QByteArray &name, const QByteArray &value);
28 void setReadTimeout(int timeout);
29 int getReadTimeout() { return readTimeout; }
31 QNetworkReply *networkReply(const HttpRequest &req);
32 virtual QObject *request(const HttpRequest &req);
33 QObject *request(const QUrl &url,
34 QNetworkAccessManager::Operation operation = QNetworkAccessManager::GetOperation,
35 const QByteArray &body = QByteArray(),
37 QObject *get(const QUrl &url);
38 QObject *head(const QUrl &url);
39 QObject *post(const QUrl &url, const QMap<QString, QString> ¶ms);
40 QObject *post(const QUrl &url, const QByteArray &body, const QByteArray &contentType);
43 QMap<QByteArray, QByteArray> requestHeaders;
47 class HttpReply : public QObject {
51 HttpReply(QObject *parent = 0) : QObject(parent) {}
52 virtual QUrl url() const = 0;
53 virtual int statusCode() const = 0;
54 int isSuccessful() const { return statusCode() >= 200 && statusCode() < 300; }
55 virtual QString reasonPhrase() const { return QString(); }
56 virtual const QList<QNetworkReply::RawHeaderPair> headers() const {
57 return QList<QNetworkReply::RawHeaderPair>();
59 virtual QByteArray header(const QByteArray &headerName) const {
64 virtual QByteArray body() const = 0;
67 void data(const QByteArray &bytes);
68 void error(const QString &message);
69 void finished(const HttpReply &reply);
72 class NetworkHttpReply : public HttpReply {
76 NetworkHttpReply(const HttpRequest &req, Http &http);
78 int statusCode() const;
79 QString reasonPhrase() const;
80 const QList<QNetworkReply::RawHeaderPair> headers() const;
81 QByteArray header(const QByteArray &headerName) const;
82 QByteArray body() const;
86 void replyError(QNetworkReply::NetworkError);
87 void downloadProgress(qint64 bytesReceived, qint64 bytesTotal);
92 QString errorMessage();
98 QNetworkReply *networkReply;
99 QTimer *readTimeoutTimer;