HTTP Client data container for form(multipart/form-data)
Dependencies: mbed EthernetInterface HTTPClient mbed-rtos
Diff: HTTPPoster.h
- Revision:
- 0:fcd577a3925b
- Child:
- 1:77c616a1ab54
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/HTTPPoster.h Thu May 31 10:32:39 2012 +0000 @@ -0,0 +1,61 @@ +#ifndef HTTP_POSTER_H +#define HTTP_POSTER_H +#include "mbed.h" +#include "HTTPData.h" +#include <vector> + +/** HTTPPoster HTTP Client data container for form(multipart/form-data) + * + *@code + *HTTPClient client; + *HTTPPoster data; + *data.addFile("image", "/local/image.jpg"); + *data.add("title", "hello"); + *string url = "http://va009039.appspot.com/mbed/upload/"; + *HTTPResult r = client.post(url.c_str(), data, NULL); + *printf("result:%d HTTPResponseCode: %d\n", r, client.getHTTPResponseCode()); + *@endcode + */ + +struct stpost { + bool file; + string head; + string value; + int length; +}; + +///HTTPPoster HTTP Client data container for form(multipart/form-data) +class HTTPPoster : public HTTPData +{ +public: + ///Instantiates the object. + HTTPPoster(); + ///put file + bool addFile(const char* name, const char* path); + ///put param + bool add(const char* name, const char* value); + + virtual ~HTTPPoster(); + virtual void clear() {}; +protected: + virtual string getDataType(); + virtual int getDataLen(); + virtual int read(char* buf, int len); + virtual int write(const char* buf, int len) { return 0;} + virtual void setDataType(const string& type) {} + virtual bool getIsChunked() {return false;} + virtual void setIsChunked(bool chunked) {} + virtual void setDataLen(int len) {} +private: + int m_seq; + int m_cur; + int m_pos; + vector <stpost> m_post_data; + FILE* m_fp; + int m_len; + int m_send_len; + string m_buf; + string m_ContentType; + char* m_boundary; +}; +#endif