Fork HTTPClient and Modfiy code for mbed 6.0
Dependents: mbed-demo-http-get-json
Diff: HTTPClient.h
- Revision:
- 20:4ea5255c1b04
- Parent:
- 19:bcbf0af9fac3
- Child:
- 21:d33f7e1ce811
--- a/HTTPClient.h Fri Jan 24 13:51:36 2014 +0000 +++ b/HTTPClient.h Sun Feb 02 16:47:06 2014 +0000 @@ -34,19 +34,18 @@ #include "mbed.h" ///HTTP client results -enum HTTPResult -{ - HTTP_PROCESSING, ///<Processing - HTTP_PARSE, ///<url Parse error - HTTP_DNS, ///<Could not resolve name - HTTP_PRTCL, ///<Protocol error - HTTP_NOTFOUND, ///<HTTP 404 Error - HTTP_REFUSED, ///<HTTP 403 Error - HTTP_ERROR, ///<HTTP xxx error - HTTP_TIMEOUT, ///<Connection timeout - HTTP_CONN, ///<Connection error - HTTP_CLOSED, ///<Connection was closed by remote host - HTTP_OK = 0, ///<Success +enum HTTPResult { + HTTP_PROCESSING, ///<Processing + HTTP_PARSE, ///<url Parse error + HTTP_DNS, ///<Could not resolve name + HTTP_PRTCL, ///<Protocol error + HTTP_NOTFOUND, ///<HTTP 404 Error + HTTP_REFUSED, ///<HTTP 403 Error + HTTP_ERROR, ///<HTTP xxx error + HTTP_TIMEOUT, ///<Connection timeout + HTTP_CONN, ///<Connection error + HTTP_CLOSED, ///<Connection was closed by remote host + HTTP_OK = 0, ///<Success }; /**A simple HTTP Client @@ -57,108 +56,123 @@ class HTTPClient { public: - ///Instantiate the HTTP client - HTTPClient(); - ~HTTPClient(); - - /** - Provides a basic authentification feature (Base64 encoded username and password) - Pass two NULL pointers to switch back to no authentication - @param user username to use for authentication, must remain valid durlng the whole HTTP session - @param user password to use for authentication, must remain valid durlng the whole HTTP session - */ - void basicAuth(const char* user, const char* password); //Basic Authentification - - /** - Set custom headers for request. - Pass NULL, 0 to turn off custom headers. - @param headers an array (size multiple of two) key-value pairs, must remain valid during the whole HTTP session - @param pairs number of key-value pairs - */ - void customHeaders(const char** headers, size_t pairs); - - //High Level setup functions - /** Execute a GET request on the URL - Blocks until completion - @param url : url on which to execute the request - @param pDataIn : pointer to an IHTTPDataIn instance that will collect the data returned by the request, can be NULL - @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended) - @return 0 on success, HTTP error (<0) on failure - */ - HTTPResult get(const char* url, IHTTPDataIn* pDataIn, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking - - /** Execute a GET request on the URL - Blocks until completion - This is a helper to directly get a piece of text from a HTTP result - @param url : url on which to execute the request - @param result : pointer to a char array in which the result will be stored - @param maxResultLen : length of the char array (including space for the NULL-terminating char) - @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended) - @return 0 on success, HTTP error (<0) on failure - */ - HTTPResult get(const char* url, char* result, size_t maxResultLen, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking + ///Instantiate the HTTP client + HTTPClient(); + ~HTTPClient(); + + /** + Provides a basic authentification feature (Base64 encoded username and password) + Pass two NULL pointers to switch back to no authentication + @param user username to use for authentication, must remain valid durlng the whole HTTP session + @param user password to use for authentication, must remain valid durlng the whole HTTP session + */ + void basicAuth(const char* user, const char* password); //Basic Authentification + + /** + Set custom headers for request. + + Pass NULL, 0 to turn off custom headers. + + @code + const char * hdrs[] = + { + "Connection", "keep-alive", + "Accept", "text/html", + "User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64)", + "Accept-Encoding", "gzip,deflate,sdch", + "Accept-Language", "en-US,en;q=0.8", + }; + + http.basicAuth("username", "password"); + http.customHeaders(hdrs, 5); + @endcode + + @param headers an array (size multiple of two) key-value pairs, must remain valid during the whole HTTP session + @param pairs number of key-value pairs + */ + void customHeaders(const char** headers, size_t pairs); + + //High Level setup functions + /** Execute a GET request on the URL + Blocks until completion + @param url : url on which to execute the request + @param pDataIn : pointer to an IHTTPDataIn instance that will collect the data returned by the request, can be NULL + @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended) + @return 0 on success, HTTP error (<0) on failure + */ + HTTPResult get(const char* url, IHTTPDataIn* pDataIn, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking + + /** Execute a GET request on the URL + Blocks until completion + This is a helper to directly get a piece of text from a HTTP result + @param url : url on which to execute the request + @param result : pointer to a char array in which the result will be stored + @param maxResultLen : length of the char array (including space for the NULL-terminating char) + @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended) + @return 0 on success, HTTP error (<0) on failure + */ + HTTPResult get(const char* url, char* result, size_t maxResultLen, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking - /** Execute a POST request on the URL - Blocks until completion - @param url : url on which to execute the request - @param dataOut : a IHTTPDataOut instance that contains the data that will be posted - @param pDataIn : pointer to an IHTTPDataIn instance that will collect the data returned by the request, can be NULL - @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended) - @return 0 on success, HTTP error (<0) on failure - */ - HTTPResult post(const char* url, const IHTTPDataOut& dataOut, IHTTPDataIn* pDataIn, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking - - /** Execute a PUT request on the URL - Blocks until completion - @param url : url on which to execute the request - @param dataOut : a IHTTPDataOut instance that contains the data that will be put - @param pDataIn : pointer to an IHTTPDataIn instance that will collect the data returned by the request, can be NULL - @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended) - @return 0 on success, HTTP error (<0) on failure - */ - HTTPResult put(const char* url, const IHTTPDataOut& dataOut, IHTTPDataIn* pDataIn, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking - - /** Execute a DELETE request on the URL - Blocks until completion - @param url : url on which to execute the request - @param pDataIn : pointer to an IHTTPDataIn instance that will collect the data returned by the request, can be NULL - @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended) - @return 0 on success, HTTP error (<0) on failure - */ - HTTPResult del(const char* url, IHTTPDataIn* pDataIn, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking - - /** Get last request's HTTP response code - @return The HTTP response code of the last request - */ - int getHTTPResponseCode(); - + /** Execute a POST request on the URL + Blocks until completion + @param url : url on which to execute the request + @param dataOut : a IHTTPDataOut instance that contains the data that will be posted + @param pDataIn : pointer to an IHTTPDataIn instance that will collect the data returned by the request, can be NULL + @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended) + @return 0 on success, HTTP error (<0) on failure + */ + HTTPResult post(const char* url, const IHTTPDataOut& dataOut, IHTTPDataIn* pDataIn, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking + + /** Execute a PUT request on the URL + Blocks until completion + @param url : url on which to execute the request + @param dataOut : a IHTTPDataOut instance that contains the data that will be put + @param pDataIn : pointer to an IHTTPDataIn instance that will collect the data returned by the request, can be NULL + @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended) + @return 0 on success, HTTP error (<0) on failure + */ + HTTPResult put(const char* url, const IHTTPDataOut& dataOut, IHTTPDataIn* pDataIn, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking + + /** Execute a DELETE request on the URL + Blocks until completion + @param url : url on which to execute the request + @param pDataIn : pointer to an IHTTPDataIn instance that will collect the data returned by the request, can be NULL + @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended) + @return 0 on success, HTTP error (<0) on failure + */ + HTTPResult del(const char* url, IHTTPDataIn* pDataIn, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking + + /** Get last request's HTTP response code + @return The HTTP response code of the last request + */ + int getHTTPResponseCode(); + private: - enum HTTP_METH - { - HTTP_GET, - HTTP_POST, - HTTP_PUT, - HTTP_DELETE, - HTTP_HEAD - }; + enum HTTP_METH { + HTTP_GET, + HTTP_POST, + HTTP_PUT, + HTTP_DELETE, + HTTP_HEAD + }; - HTTPResult connect(const char* url, HTTP_METH method, IHTTPDataOut* pDataOut, IHTTPDataIn* pDataIn, int timeout); //Execute request - HTTPResult recv(char* buf, size_t minLen, size_t maxLen, size_t* pReadLen); //0 on success, err code on failure - HTTPResult send(char* buf, size_t len = 0); //0 on success, err code on failure - HTTPResult parseURL(const char* url, char* scheme, size_t maxSchemeLen, char* host, size_t maxHostLen, uint16_t* port, char* path, size_t maxPathLen); //Parse URL - void createauth (const char *user, const char *pwd, char *buf, int len); - int base64enc(const char *input, unsigned int length, char *output, int len); + HTTPResult connect(const char* url, HTTP_METH method, IHTTPDataOut* pDataOut, IHTTPDataIn* pDataIn, int timeout); //Execute request + HTTPResult recv(char* buf, size_t minLen, size_t maxLen, size_t* pReadLen); //0 on success, err code on failure + HTTPResult send(char* buf, size_t len = 0); //0 on success, err code on failure + HTTPResult parseURL(const char* url, char* scheme, size_t maxSchemeLen, char* host, size_t maxHostLen, uint16_t* port, char* path, size_t maxPathLen); //Parse URL + void createauth (const char *user, const char *pwd, char *buf, int len); + int base64enc(const char *input, unsigned int length, char *output, int len); - //Parameters - TCPSocketConnection m_sock; - - int m_timeout; + //Parameters + TCPSocketConnection m_sock; + + int m_timeout; - const char* m_basicAuthUser; - const char* m_basicAuthPassword; - const char** m_customHeaders; - size_t m_nCustomHeaders; - int m_httpResponseCode; + const char* m_basicAuthUser; + const char* m_basicAuthPassword; + const char** m_customHeaders; + size_t m_nCustomHeaders; + int m_httpResponseCode; };