diff --git a/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp b/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp index 033fd3e84..bad89074b 100644 --- a/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp +++ b/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.cpp @@ -256,7 +256,7 @@ void HTTPClient::setReuse(bool reuse) * set User Agent * @param userAgent const char * */ -void HTTPClient::setUserAgent(const char * userAgent) +void HTTPClient::setUserAgent(const String& userAgent) { _userAgent = userAgent; } @@ -359,7 +359,7 @@ int HTTPClient::sendRequest(const char * type, uint8_t * payload, size_t size) } if(payload && size > 0) { - addHeader("Content-Length", String(size)); + addHeader(F("Content-Length"), String(size)); } // send Header @@ -644,8 +644,8 @@ String HTTPClient::getString(void) if(_size) { // try to reserve needed memmory if(!sstring.reserve((_size + 1))) { - DEBUG_HTTPCLIENT("[HTTP-Client][getString] too less memory to reserve as string! need: %d\n", (_size + 1)); - return String("--too less memory--"); + DEBUG_HTTPCLIENT("[HTTP-Client][getString] not enough memory to reserve a string! need: %d\n", (_size + 1)); + return ""; } } @@ -662,27 +662,27 @@ String HTTPClient::errorToString(int error) { switch(error) { case HTTPC_ERROR_CONNECTION_REFUSED: - return String("connection refused"); + return F("connection refused"); case HTTPC_ERROR_SEND_HEADER_FAILED: - return String("send header failed"); + return F("send header failed"); case HTTPC_ERROR_SEND_PAYLOAD_FAILED: - return String("send payload failed"); + return F("send payload failed"); case HTTPC_ERROR_NOT_CONNECTED: - return String("not connected"); + return F("not connected"); case HTTPC_ERROR_CONNECTION_LOST: - return String("connection lost"); + return F("connection lost"); case HTTPC_ERROR_NO_STREAM: - return String("no stream"); + return F("no stream"); case HTTPC_ERROR_NO_HTTP_SERVER: - return String("no HTTP server"); + return F("no HTTP server"); case HTTPC_ERROR_TOO_LESS_RAM: - return String("too less ram"); + return F("too less ram"); case HTTPC_ERROR_ENCODING: - return String("Transfer-Encoding not supported"); + return F("Transfer-Encoding not supported"); case HTTPC_ERROR_STREAM_WRITE: - return String("Stream write error"); + return F("Stream write error"); case HTTPC_ERROR_READ_TIMEOUT: - return String("read Timeout"); + return F("read Timeout"); default: return String(); } @@ -698,7 +698,10 @@ void HTTPClient::addHeader(const String& name, const String& value, bool first) { // not allow set of Header handled by code - if(!name.equalsIgnoreCase("Connection") && !name.equalsIgnoreCase("User-Agent") && !name.equalsIgnoreCase("Host") && !(_base64Authorization.length() && name.equalsIgnoreCase("Authorization"))) { + if(!name.equalsIgnoreCase(F("Connection")) && + !name.equalsIgnoreCase(F("User-Agent")) && + !name.equalsIgnoreCase(F("Host")) && + !(name.equalsIgnoreCase(F("Authorization")) && _base64Authorization.length())){ String headerLine = name; headerLine += ": "; headerLine += value; @@ -821,7 +824,7 @@ bool HTTPClient::sendHeader(const char * type) return false; } - String header = String(type) + " " + _uri + " HTTP/1."; + String header = String(type) + " " + _uri + F(" HTTP/1."); if(_useHTTP10) { header += "0"; @@ -829,24 +832,25 @@ bool HTTPClient::sendHeader(const char * type) header += "1"; } - header += "\r\n" - "Host: " + _host + "\r\n" - "User-Agent: " + _userAgent + "\r\n" - "Connection: "; + header += String(F("\r\nHost: ")) + _host + + F("\r\nUser-Agent: ") + _userAgent + + F("\r\nConnection: "); if(_reuse) { - header += "keep-alive"; + header += F("keep-alive"); } else { - header += "close"; + header += F("close"); } header += "\r\n"; if(!_useHTTP10) { - header += "Accept-Encoding: identity;q=1,chunked;q=0.1,*;q=0\r\n"; + header += F("Accept-Encoding: identity;q=1,chunked;q=0.1,*;q=0\r\n"); } if(_base64Authorization.length()) { - header += "Authorization: Basic " + _base64Authorization + "\r\n"; + header += F("Authorization: Basic "); + header += _base64Authorization; + header += "\r\n"; } header += _headers + "\r\n"; diff --git a/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.h b/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.h index d8c926359..1f5ef7fbc 100644 --- a/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.h +++ b/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.h @@ -145,7 +145,7 @@ public: bool connected(void); void setReuse(bool reuse); /// keep-alive - void setUserAgent(const char * userAgent); + void setUserAgent(const String& userAgent); void setAuthorization(const char * user, const char * password); void setAuthorization(const char * auth); void setTimeout(uint16_t timeout); diff --git a/libraries/ESP8266httpUpdate/src/ESP8266httpUpdate.cpp b/libraries/ESP8266httpUpdate/src/ESP8266httpUpdate.cpp index 910d8f901..b0020aad7 100644 --- a/libraries/ESP8266httpUpdate/src/ESP8266httpUpdate.cpp +++ b/libraries/ESP8266httpUpdate/src/ESP8266httpUpdate.cpp @@ -125,31 +125,31 @@ String ESP8266HTTPUpdate::getLastErrorString(void) StreamString error; Update.printError(error); error.trim(); // remove line ending - return "Update error: " + error; + return String(F("Update error: ")) + error; } // error from http client if(_lastError > -100) { - return "HTTP error: " + HTTPClient::errorToString(_lastError); + return String(F("HTTP error: ")) + HTTPClient::errorToString(_lastError); } switch(_lastError) { case HTTP_UE_TOO_LESS_SPACE: - return String("To less space"); + return F("To less space"); case HTTP_UE_SERVER_NOT_REPORT_SIZE: - return String("Server not Report Size"); + return F("Server not Report Size"); case HTTP_UE_SERVER_FILE_NOT_FOUND: - return String("File not Found (404)"); + return F("File not Found (404)"); case HTTP_UE_SERVER_FORBIDDEN: - return String("Forbidden (403)"); + return F("Forbidden (403)"); case HTTP_UE_SERVER_WRONG_HTTP_CODE: - return String("Wrong HTTP code"); + return F("Wrong HTTP code"); case HTTP_UE_SERVER_FAULTY_MD5: - return String("Faulty MD5"); + return F("Faulty MD5"); case HTTP_UE_BIN_VERIFY_HEADER_FAILED: - return String("Verify bin header failed"); + return F("Verify bin header failed"); case HTTP_UE_BIN_FOR_WRONG_FLASH: - return String("bin for wrong flash size"); + return F("bin for wrong flash size"); } return String(); @@ -170,22 +170,22 @@ HTTPUpdateResult ESP8266HTTPUpdate::handleUpdate(HTTPClient& http, const String& // use HTTP/1.0 for update since the update handler not support any transfer Encoding http.useHTTP10(true); http.setTimeout(8000); - http.setUserAgent("ESP8266-http-Update"); - http.addHeader("x-ESP8266-STA-MAC", WiFi.macAddress()); - http.addHeader("x-ESP8266-AP-MAC", WiFi.softAPmacAddress()); - http.addHeader("x-ESP8266-free-space", String(ESP.getFreeSketchSpace())); - http.addHeader("x-ESP8266-sketch-size", String(ESP.getSketchSize())); - http.addHeader("x-ESP8266-chip-size", String(ESP.getFlashChipRealSize())); - http.addHeader("x-ESP8266-sdk-version", ESP.getSdkVersion()); + http.setUserAgent(F("ESP8266-http-Update")); + http.addHeader(F("x-ESP8266-STA-MAC"), WiFi.macAddress()); + http.addHeader(F("x-ESP8266-AP-MAC"), WiFi.softAPmacAddress()); + http.addHeader(F("x-ESP8266-free-space"), String(ESP.getFreeSketchSpace())); + http.addHeader(F("x-ESP8266-sketch-size"), String(ESP.getSketchSize())); + http.addHeader(F("x-ESP8266-chip-size"), String(ESP.getFlashChipRealSize())); + http.addHeader(F("x-ESP8266-sdk-version"), ESP.getSdkVersion()); if(spiffs) { - http.addHeader("x-ESP8266-mode", "spiffs"); + http.addHeader(F("x-ESP8266-mode"), F("spiffs")); } else { - http.addHeader("x-ESP8266-mode", "sketch"); + http.addHeader(F("x-ESP8266-mode"), F("sketch")); } if(currentVersion && currentVersion[0] != 0x00) { - http.addHeader("x-ESP8266-version", currentVersion); + http.addHeader(F("x-ESP8266-version"), currentVersion); } const char * headerkeys[] = { "x-MD5" };