Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .h
- HttpClient& client;
- int bytesWritten;
- public:
- int contentLength;
- char* client_ID;
- char* api_Key;
- ParamSender(HttpClient& _client) : client(_client) {
- bytesWritten = 0;
- contentLength = 0;
- }
- bool start(int _contentLength);
- bool sendParam(const char* name, char* value);
- bool sendParam(const __FlashStringHelper *ifsh, char* value);
- bool end();
- };
- .cpp
- #include "ParamSender.h"
- #include "GSMmodem.h"
- #define HTTP_PARAMS_PATH "/client/parameter"
- bool ParamSender::start(int _contentLength) {
- #ifdef USE_SSL
- client.connectionKeepAlive();
- #endif // USE_SSL
- client.beginRequest();
- int err = client.post(HTTP_PARAMS_PATH);
- if (err == 0) {
- client.sendHeader(HTTP_HEADER_CONTENT_TYPE, HTTP_URLENCODED);
- client.sendHeader(HTTP_HEADER_CONTENT_LENGTH, contentLength);
- client.sendHeader(HTTP_HEADER_CLIENT_GUID, client_ID);
- client.sendHeader(HTTP_HEADER_API_KEY, api_Key);
- client.endRequest();
- return true;
- }
- else {
- DBGS("ParamSend START failed");
- client.stop();
- return false;
- }
- }
- bool ParamSender::sendParam(const char* name, char* value) {
- int written = 0;
- written += client.write(name);
- written += client.write("=");
- written += client.write(value);
- written += client.write("\n");
- if (written < strlen(name) + strlen(value) + 3) {
- client.stop();
- return false;
- }
- bytesWritten += written;
- return true;
- }
- bool ParamSender::sendParam(const __FlashStringHelper *ifsh, char* value) {
- int written = 0;
- int namelength = 0;
- //written += client.print(name);
- PGM_P p = reinterpret_cast<PGM_P>(ifsh);
- p = reinterpret_cast<PGM_P>(ifsh);
- while (1) {
- unsigned char c = pgm_read_byte(p++);
- if (c == 0) break;
- if (client.write(c)) written++;
- else break;
- }
- namelength = written;
- written += client.write("=");
- written += client.write(value);
- written += client.write("\n");
- if (written < namelength + strlen(value) + 3) {
- client.stop();
- return false;
- }
- bytesWritten += written;
- return true;
- }
- bool ParamSender::end() {
- //char buff[16] = { '.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.' };
- char buff[8] = { '.','.','.','.','.','.','.','.'};
- while (bytesWritten < contentLength) {
- int toWrite = contentLength - bytesWritten;
- if (toWrite > 8) toWrite = 8;
- int written = client.write(buff, toWrite);
- if (written < toWrite) {
- client.stop();
- return false;
- }
- bytesWritten += written;
- }
- int status = client.responseStatusCode();
- client.skipResponseHeaders();
- if (!status) {
- client.stop();
- return false;
- }
- client.stop();
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement