mirror of
https://github.com/arduino-libraries/ArduinoHttpClient.git
synced 2025-04-19 21:22:15 +03:00
New API's to read header name and value as String's
This commit is contained in:
parent
625154754a
commit
9ab55ef6e2
@ -372,6 +372,68 @@ int HttpClient::read()
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool HttpClient::headerAvailable()
|
||||||
|
{
|
||||||
|
// clear the currently store header line
|
||||||
|
iHeaderLine = "";
|
||||||
|
|
||||||
|
while (!endOfHeadersReached())
|
||||||
|
{
|
||||||
|
// read a byte from the header
|
||||||
|
int c = readHeader();
|
||||||
|
|
||||||
|
if (c == '\r' || c == '\n')
|
||||||
|
{
|
||||||
|
if (iHeaderLine.length())
|
||||||
|
{
|
||||||
|
// end of the line, all done
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// ignore any CR or LF characters
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// append byte to header line
|
||||||
|
iHeaderLine += (char)c;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (iHeaderLine.length() > 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
String HttpClient::readHeaderName()
|
||||||
|
{
|
||||||
|
int colonIndex = iHeaderLine.indexOf(':');
|
||||||
|
|
||||||
|
if (colonIndex == -1)
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
return iHeaderLine.substring(0, colonIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
String HttpClient::readHeaderValue()
|
||||||
|
{
|
||||||
|
int colonIndex = iHeaderLine.indexOf(':');
|
||||||
|
int startIndex = colonIndex + 1;
|
||||||
|
|
||||||
|
if (colonIndex == -1)
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
// trim any leading whitespace
|
||||||
|
while (startIndex < (int)iHeaderLine.length() && isSpace(iHeaderLine[startIndex]))
|
||||||
|
{
|
||||||
|
startIndex++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return iHeaderLine.substring(startIndex);
|
||||||
|
}
|
||||||
|
|
||||||
int HttpClient::read(uint8_t *buf, size_t size)
|
int HttpClient::read(uint8_t *buf, size_t size)
|
||||||
{
|
{
|
||||||
int ret =iClient->read(buf, size);
|
int ret =iClient->read(buf, size);
|
||||||
|
17
HttpClient.h
17
HttpClient.h
@ -142,6 +142,22 @@ public:
|
|||||||
*/
|
*/
|
||||||
int responseStatusCode();
|
int responseStatusCode();
|
||||||
|
|
||||||
|
/** Check if a header is available to be read.
|
||||||
|
Use readHeaderName() to read header name, and readHeaderValue() to
|
||||||
|
read the header value
|
||||||
|
*/
|
||||||
|
bool headerAvailable();
|
||||||
|
|
||||||
|
/** Read the name of the current response header.
|
||||||
|
Returns empty string if a header is not available.
|
||||||
|
*/
|
||||||
|
String readHeaderName();
|
||||||
|
|
||||||
|
/** Read the vallue of the current response header.
|
||||||
|
Returns empty string if a header is not available.
|
||||||
|
*/
|
||||||
|
String readHeaderValue();
|
||||||
|
|
||||||
/** Read the next character of the response headers.
|
/** Read the next character of the response headers.
|
||||||
This functions in the same way as read() but to be used when reading
|
This functions in the same way as read() but to be used when reading
|
||||||
through the headers. Check whether or not the end of the headers has
|
through the headers. Check whether or not the end of the headers has
|
||||||
@ -256,6 +272,7 @@ protected:
|
|||||||
// How far through a Content-Length header prefix we are
|
// How far through a Content-Length header prefix we are
|
||||||
const char* iContentLengthPtr;
|
const char* iContentLengthPtr;
|
||||||
uint32_t iHttpResponseTimeout;
|
uint32_t iHttpResponseTimeout;
|
||||||
|
String iHeaderLine;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user