diff --git a/libraries/HTTPClient/src/HTTPClient.cpp b/libraries/HTTPClient/src/HTTPClient.cpp index 0d84a6d61ff..aa2b6ed9d75 100644 --- a/libraries/HTTPClient/src/HTTPClient.cpp +++ b/libraries/HTTPClient/src/HTTPClient.cpp @@ -1186,23 +1186,32 @@ int HTTPClient::handleHeaderResponse() _transferEncoding = HTTPC_TE_IDENTITY; unsigned long lastDataTime = millis(); + + String headerLine = _client->readStringUntil('\n'); + headerLine.trim(); // remove \r + lastDataTime = millis(); + + log_v("RX: '%s'", headerLine.c_str()); + + if(headerLine.startsWith("HTTP/1.")) { + if(_canReuse) { + _canReuse = (headerLine[sizeof "HTTP/1." - 1] != '0'); + } + } + _returnCode = headerLine.substring(headerLine.indexOf(' ')).toInt(); + while(connected()) { size_t len = _client->available(); if(len > 0) { - String headerLine = _client->readStringUntil('\n'); + headerLine = _client->readStringUntil('\n'); headerLine.trim(); // remove \r lastDataTime = millis(); log_v("RX: '%s'", headerLine.c_str()); - if(headerLine.startsWith("HTTP/1.")) { - if(_canReuse) { - _canReuse = (headerLine[sizeof "HTTP/1." - 1] != '0'); - } - _returnCode = headerLine.substring(9, headerLine.indexOf(' ', 9)).toInt(); - } else if(headerLine.indexOf(':')) { + if(headerLine.indexOf(':')) { String headerName = headerLine.substring(0, headerLine.indexOf(':')); String headerValue = headerLine.substring(headerLine.indexOf(':') + 1); headerValue.trim(); @@ -1450,4 +1459,4 @@ bool HTTPClient::setURL(const String& url) const String &HTTPClient::getLocation(void) { return _location; -} \ No newline at end of file +}