1
0
mirror of https://github.com/arduino-libraries/ArduinoHttpClient.git synced 2025-04-19 21:22:15 +03:00

Make skipResponseHeaders() optional, if contentLength() is called first

This commit is contained in:
Sandeep Mistry 2016-06-17 14:55:03 -04:00
parent 4b6f4dfa29
commit 255118660b
3 changed files with 54 additions and 39 deletions

View File

@ -384,6 +384,17 @@ int HttpClient::skipResponseHeaders()
}
}
int HttpClient::contentLength()
{
// skip the response headers, if they haven't been read already
if (!endOfHeadersReached())
{
skipResponseHeaders();
}
return iContentLength;
}
bool HttpClient::endOfBodyReached()
{
if (endOfHeadersReached() && (contentLength() != kNoContentLengthHeader))

View File

@ -159,6 +159,7 @@ public:
/** Check if a header is available to be read.
Use readHeaderName() to read header name, and readHeaderValue() to
read the header value
MUST be called after responseStatusCode() and before contentLength()
*/
bool headerAvailable();
@ -177,6 +178,7 @@ public:
through the headers. Check whether or not the end of the headers has
been reached by calling endOfHeadersReached(), although after that point
this will still return data as read() would, but slightly less efficiently
MUST be called after responseStatusCode() and before contentLength()
@return The next character of the response headers
*/
int readHeader();
@ -186,6 +188,7 @@ public:
returned in the response. You can also use it after you've found all of
the headers you're interested in, and just want to get on with processing
the body.
MUST be called after responseStatusCode()
@return HTTP_SUCCESS if successful, else an error code
*/
int skipResponseHeaders();
@ -204,10 +207,12 @@ public:
virtual bool completed() { return endOfBodyReached(); };
/** Return the length of the body.
Also skips response headers if they have not been read already
MUST be called after responseStatusCode()
@return Length of the body, in bytes, or kNoContentLengthHeader if no
Content-Length header was returned by the server
*/
int contentLength() { return iContentLength; };
int contentLength();
// Inherited from Print
// Note: 1st call to these indicates the user is sending the body, so if need

View File

@ -68,9 +68,14 @@ void loop()
// similar "success" code (200-299) before carrying on,
// but we'll print out whatever response we get
err = http.skipResponseHeaders();
if (err >= 0)
{
// If you are interesting in the response headers, you
// can read them here:
//while(http.headerAvailable())
//{
// String headerName = http.readHeaderName();
// String headerValue = http.readHeaderValue();
//}
int bodyLen = http.contentLength();
Serial.print("Content length is: ");
Serial.println(bodyLen);
@ -104,12 +109,6 @@ void loop()
}
}
else
{
Serial.print("Failed to skip response headers: ");
Serial.println(err);
}
}
else
{
Serial.print("Getting response failed: ");
Serial.println(err);