virtual std::string host() const;
virtual std::string hostAndPort() const;
virtual unsigned short port() const;
+ virtual std::string query() const;
virtual string_list requestHeaders() const;
virtual std::string header(const std::string& name) const;
void setResponseLength(unsigned int l);
virtual unsigned int responseLength() const;
+
+ /**
+ * Query the size of the request body. -1 (the default value) means no
+ * request body
+ */
+ virtual int requestBodyLength() const;
+ /**
+ * Retrieve the body data bytes. Will be passed the maximum body bytes
+ * to return in the buffer, and should update count with the actual number
+ * of bytes written.
+ */
+ virtual void getBodyData(char* s, int& count) const;
+
+ /**
+ * retrieve the request body content type. Default is text/plain
+ */
+ virtual std::string requestBodyType() const;
+
/**
* running total of body bytes received so far. Can be used
* to generate a completion percentage, if the response length is
*/
unsigned int responseBytesReceived() const
{ return _receivedBodyBytes; }
+
+ enum HTTPVersion {
+ HTTP_VERSION_UNKNOWN = 0,
+ HTTP_0_x, // 0.9 or similar
+ HTTP_1_0,
+ HTTP_1_1
+ };
+
+ HTTPVersion responseVersion() const
+ { return _responseVersion; }
+
+ static HTTPVersion decodeVersion(const std::string& v);
+
+ bool closeAfterComplete() const;
protected:
Request(const std::string& url, const std::string method = "GET");
std::string _method;
std::string _url;
+ HTTPVersion _responseVersion;
int _responseStatus;
std::string _responseReason;
unsigned int _responseLength;
unsigned int _receivedBodyBytes;
+ bool _willClose;
typedef std::map<std::string, std::string> HeaderDict;
HeaderDict _responseHeaders;