HttpRes response object
Every time you call an HttpCli verb method, it returns an HttpRes object containing the response data and metadata.
Example Usage
var hc = new HttpCli();
var res = hc.Url("https://www.example.com").Timeout(30).Get();
// "res" is an HttpRes object with its own methodsThe HttpRes object provides the following methods:
Ok
res.Ok(): boolean;Returns true if the HTTP/HTTPS call completed, or false otherwise (for example a DNS failure, a refused connection, a timeout or a rejected TLS certificate). Check this first, before reading anything else from the response.
Ok() and StatusCode() answer different questions. Ok() is false only when the request never completed at all, in which case StatusCode() is 0 and ErrorMsg() explains why. A 404 is a completed request, so Ok() is true and the status is 404. Check both.
IsValid
res.IsValid(): boolean;Identical to Ok(), kept for backward compatibility with existing scripts. Prefer Ok() in new code.
ErrorMsg
res.ErrorMsg(): string;Returns a human-readable explanation of why the call did not complete, or an empty string when it did.
StatusCode
res.StatusCode(): number;Returns the HTTP status code from the response (e.g., 200 for success, 201 for created, 403 for forbidden, 404 for not found, 500 for server error). See HTTP status codes for details.
BodyAsString
res.BodyAsString(): string;Returns the response body as a string (useful for web pages, JSON, etc.).
BodyAsBytes
res.BodyAsBytes(): number[];Returns the response body as an array of bytes (useful for binary data, such as images).
BodySaveToFile
res.BodySaveToFile(filePath: string): boolean;Saves the response body to the specified file path. Returns true if successful, false otherwise.
ContentType
res.ContentType(): string;Returns the MIME Content-Type reported by the server.
ContentLength
res.ContentLength(): number;Returns the Content-Length reported by the server (may be missing for some responses).
Encoding
res.Encoding(): string[];Returns the content transfer encodings reported by the server, as an array. It is empty for most responses.
Headers
res.Headers(): object;Returns a JSON object with all response headers as properties. Example:
{
"Cache-Control": "max-age=604800",
"Content-Type": "text/html; charset=UTF-8",
"Date": "Sun, 30 Aug 2020 16:24:06 GMT",
// ...
}Cookies
res.Cookies(): object[];Returns an array of objects, each representing a cookie returned by the server. Example:
[
{
"Name": "1P_JAR",
"Value": "2020-08-30-16",
"Path": "/",
"Domain": ".google.com",
"Expires": "2020-09-29T16:32:11Z",
// ...
},
// ...
]TIP
Always check Ok() and StatusCode() before using the response data. Handle errors and unexpected status codes appropriately.
IMPORTANT
The body can only be read once. BodyAsString(), BodyAsBytes() and BodySaveToFile() each consume the response stream. The first call returns the content; every call after it returns an empty string, an empty array, or writes an empty file, with no error and no warning. Read it once into a variable and use that:
// BROKEN: the log line is empty, because the body was already consumed
if (res.BodySaveToFile('/tmp/payload.json')) {
Log(res.BodyAsString());
}
// Correct: read once, then use the value as often as you like
var body = res.BodyAsString();
Log(body);
WriteTextToFile('/tmp/payload.json', body);Examples
Example 1: Log response body if successful
var hc = new HttpCli();
var res = hc.Url("https://www.example.com").Timeout(30).Get();
if (res.Ok() && res.StatusCode() === 200) {
Log(res.BodyAsString());
} else {
Log('Request failed: ' + res.StatusCode());
}Example 2: Save response body to file
var hc = new HttpCli();
var res = hc.Url("https://www.example.com/image.png").Timeout(30).Get();
if (res.Ok() && res.StatusCode() === 200) {
if (res.BodySaveToFile('/tmp/image.png')) {
Log('Image saved successfully.');
} else {
Log('Failed to save image.');
}
} else {
Log('Request failed: ' + res.StatusCode());
}