diff --git a/src/app/HttpClient.cpp b/src/app/HttpClient.cpp index db485c7..29ef593 100644 --- a/src/app/HttpClient.cpp +++ b/src/app/HttpClient.cpp @@ -10,7 +10,6 @@ HttpClient::HttpClient(const char *address, uint16_t port, uint32_t timeout) : WiFiClient(), _pAddress(address), _port(port) { setTimeout(timeout); - connectByHostOrIp(); } HttpClient::HttpClient(const char *address, const char *resource, uint16_t port, uint32_t timeout) : HttpClient(address, port, timeout) @@ -44,7 +43,10 @@ HttpClient::HttpClient(const HttpClient &object) : WiFiClient() HttpClient::~HttpClient() { - if(_resource != NULL)free(_resource); + if(connected()) + stop(); + if(_resource != NULL) + free(_resource); } boolean HttpClient::connectByHostOrIp() @@ -53,6 +55,17 @@ boolean HttpClient::connectByHostOrIp() #ifdef DEBUG_HTTP_CLIENT Serial.printf("About to connect\n"); #endif + + //If we constructed the HttpClient with a NULL server address, we don't go further. + if(!_pAddress) + { + #ifdef DEBUG_HTTP_CLIENT + Serial.printf("IP Address is NULL !\n"); + #endif + _connectionStatus = FAILED; + return false; + } + if(ipAddress.fromString(_pAddress)) { _isIp = true; @@ -93,12 +106,15 @@ int HttpClient::sendHttpQuery(HttpRequestMethod method, Dictionary 99 ? 99 : available(); buffer[peekBytes((uint8_t*)buffer,safeSize)] = '\0'; - Serial.printf("Body chunk is : %s\n",buffer); + Serial.printf("Body chunk is : %s\n", buffer); #endif break; } @@ -285,7 +303,7 @@ HttpClient::HTTP_CODE HttpClient::isReplyAvailable(uint16_t timeout) } #ifdef DEBUG_HTTP_CLIENT - Serial.println("\nAfter timeout or all data is received"); + Serial.printf("\nAfter timeout or all data is received, HTTP_CODE is : %d\n", _httpCode); #endif return _httpCode; @@ -408,5 +426,20 @@ uint64_t HttpClient::computeBodyLength(Dictionary *headerData = NULL); void keepAlive(boolean enabled); void setMaxRetries(int16_t retries); - //100 ms is the default timeout + int16_t getMaxRetries(void) const; + uint16_t retriesCount(void) const; + void resetRetriesCount(void); + //10s is the default timeout HTTP_CODE isReplyAvailable(uint16_t timeout = 10000); uint16_t readHttpBody(uint8_t *buffer, uint32_t size);