Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: Car_Bon_car_module
Fork of HTTPClient by
Diff: HTTPClient.h
- Revision:
- 20:4ea5255c1b04
- Parent:
- 19:bcbf0af9fac3
- Child:
- 21:d33f7e1ce811
diff -r bcbf0af9fac3 -r 4ea5255c1b04 HTTPClient.h
--- 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;
};
