Beispiel fuer Verwendung der HTTP Methoden (GET, POST, PUT, DELETE)
Dependencies: EthernetInterface mbed-rtos mbed
Fork of Sample_HTTPClient by
HTTPClient/data/HTTPFile.cpp@1:2e29a33cd918, 2015-01-17 (annotated)
- Committer:
- marcel1691
- Date:
- Sat Jan 17 14:11:01 2015 +0000
- Revision:
- 1:2e29a33cd918
Beispiel fuer Verwendung der HTTP Methoden (GET, POST, PUT, DELETE)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
marcel1691 | 1:2e29a33cd918 | 1 | #include "HTTPFile.h" |
marcel1691 | 1:2e29a33cd918 | 2 | |
marcel1691 | 1:2e29a33cd918 | 3 | //#define DEBUG "HTfi" |
marcel1691 | 1:2e29a33cd918 | 4 | #include <cstdio> |
marcel1691 | 1:2e29a33cd918 | 5 | #if (defined(DEBUG) && !defined(TARGET_LPC11U24)) |
marcel1691 | 1:2e29a33cd918 | 6 | #define DBG(x, ...) std::printf("[DBG %s %3d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__); |
marcel1691 | 1:2e29a33cd918 | 7 | #define WARN(x, ...) std::printf("[WRN %s %3d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__); |
marcel1691 | 1:2e29a33cd918 | 8 | #define ERR(x, ...) std::printf("[ERR %s %3d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__); |
marcel1691 | 1:2e29a33cd918 | 9 | #define INFO(x, ...) std::printf("[INF %s %3d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__); |
marcel1691 | 1:2e29a33cd918 | 10 | #else |
marcel1691 | 1:2e29a33cd918 | 11 | #define DBG(x, ...) |
marcel1691 | 1:2e29a33cd918 | 12 | #define WARN(x, ...) |
marcel1691 | 1:2e29a33cd918 | 13 | #define ERR(x, ...) |
marcel1691 | 1:2e29a33cd918 | 14 | #define INFO(x, ...) |
marcel1691 | 1:2e29a33cd918 | 15 | #endif |
marcel1691 | 1:2e29a33cd918 | 16 | |
marcel1691 | 1:2e29a33cd918 | 17 | HTTPFile::HTTPFile(char* filename) { |
marcel1691 | 1:2e29a33cd918 | 18 | INFO("HTTPFile %s", filename); |
marcel1691 | 1:2e29a33cd918 | 19 | file = fopen(filename, "w"); |
marcel1691 | 1:2e29a33cd918 | 20 | m_chunked = false; |
marcel1691 | 1:2e29a33cd918 | 21 | } |
marcel1691 | 1:2e29a33cd918 | 22 | |
marcel1691 | 1:2e29a33cd918 | 23 | void HTTPFile::close() { |
marcel1691 | 1:2e29a33cd918 | 24 | INFO("close()"); |
marcel1691 | 1:2e29a33cd918 | 25 | if (file) { |
marcel1691 | 1:2e29a33cd918 | 26 | fclose(file); |
marcel1691 | 1:2e29a33cd918 | 27 | file = NULL; |
marcel1691 | 1:2e29a33cd918 | 28 | } |
marcel1691 | 1:2e29a33cd918 | 29 | } |
marcel1691 | 1:2e29a33cd918 | 30 | |
marcel1691 | 1:2e29a33cd918 | 31 | void HTTPFile::writeReset() { |
marcel1691 | 1:2e29a33cd918 | 32 | INFO("writeReset()"); |
marcel1691 | 1:2e29a33cd918 | 33 | if (file) { |
marcel1691 | 1:2e29a33cd918 | 34 | rewind(file); |
marcel1691 | 1:2e29a33cd918 | 35 | } |
marcel1691 | 1:2e29a33cd918 | 36 | } |
marcel1691 | 1:2e29a33cd918 | 37 | |
marcel1691 | 1:2e29a33cd918 | 38 | int HTTPFile::write(const char* buf, size_t len) { |
marcel1691 | 1:2e29a33cd918 | 39 | size_t written; |
marcel1691 | 1:2e29a33cd918 | 40 | INFO("write(%d,%s) m_len(%d), chunk %d", len, buf, m_len, m_chunked); |
marcel1691 | 1:2e29a33cd918 | 41 | if (file) { |
marcel1691 | 1:2e29a33cd918 | 42 | written = fwrite(buf, 1, len, file); |
marcel1691 | 1:2e29a33cd918 | 43 | INFO(" writ:%d, ftell: %d", written, ftell(file)); |
marcel1691 | 1:2e29a33cd918 | 44 | if ((!m_chunked && (ftell(file) >= m_len)) || (m_chunked && !written)) { |
marcel1691 | 1:2e29a33cd918 | 45 | INFO("closing"); |
marcel1691 | 1:2e29a33cd918 | 46 | close(); |
marcel1691 | 1:2e29a33cd918 | 47 | } |
marcel1691 | 1:2e29a33cd918 | 48 | } |
marcel1691 | 1:2e29a33cd918 | 49 | return len; |
marcel1691 | 1:2e29a33cd918 | 50 | } |
marcel1691 | 1:2e29a33cd918 | 51 | |
marcel1691 | 1:2e29a33cd918 | 52 | void HTTPFile::setDataType(const char* type) { |
marcel1691 | 1:2e29a33cd918 | 53 | INFO("setDataType(%s)", type); |
marcel1691 | 1:2e29a33cd918 | 54 | } |
marcel1691 | 1:2e29a33cd918 | 55 | |
marcel1691 | 1:2e29a33cd918 | 56 | //void HTTPFile::setLocation(const char * location) { |
marcel1691 | 1:2e29a33cd918 | 57 | // |
marcel1691 | 1:2e29a33cd918 | 58 | //} |
marcel1691 | 1:2e29a33cd918 | 59 | |
marcel1691 | 1:2e29a33cd918 | 60 | void HTTPFile::setIsChunked(bool chunked) { |
marcel1691 | 1:2e29a33cd918 | 61 | INFO("setIsChunked(%d)", chunked); |
marcel1691 | 1:2e29a33cd918 | 62 | m_chunked = chunked; |
marcel1691 | 1:2e29a33cd918 | 63 | } |
marcel1691 | 1:2e29a33cd918 | 64 | |
marcel1691 | 1:2e29a33cd918 | 65 | void HTTPFile::setDataLen(size_t len) { |
marcel1691 | 1:2e29a33cd918 | 66 | INFO("setDataLen(%d)", len); |
marcel1691 | 1:2e29a33cd918 | 67 | m_len = len; |
marcel1691 | 1:2e29a33cd918 | 68 | } |