Skip to content

Api > HttpClient > WebRequest()


HttpClient.WebRequest(string url, HttpMethod method, object table, HeaderCollection extraHeaders = Nil)⚓︎

Sends a new Wen Request with Json content. A URL, HTTP Method and an object are required. The Object will be serialized to Json string internally.

Parameters:⚓︎

Name Type Description
url string Web request URL.
method HttpMethod Request Method.
table object A serializable object.
extraHeaders HeaderCollection Optional extra headers to be attached to the request.

Returns:⚓︎

type Description
Promise Promise with WebRequestResponse payload.

Usage⚓︎

---@type HttpClient
local httpclient;

---@type string
local url;

---@type HttpMethod
local method;

---@type object
local table;

---@type HeaderCollection
local extraHeaders;


local val0 = httpclient.WebRequest(url, method, table, extraHeaders)

Example⚓︎

You may pass custom header collection for the request. The web request returns a promise, which if resolved, returns an object of WebRequestResult type. You need to create a then function to handle the response from the promise. A promise may be rejected or result in an error.

local client = HttpClient();

-- simple get request, no content
client.WebRequest("http://foo.com/path/to/get", HttpMethod.GET).Then(
    ---@param result WebRequestResponse
    function (result)
        if result.StatusCode == 200 then
            Debug:Log("Success");
        end
    end
);

local stringContent = "a string content";

-- POST request with string content
client.WebRequest("http://foo.com/path/to/post", HttpMethod.POST, stringContent).Then(
    ---@param result WebRequestResponse
    function (result)
        if result.StatusCode == 200 then
            Debug:Log("Success");
        end
    end
);


local binaryContent = {};
local stringLength = string.len(stringContent);
for i = 1, stringLength, 1 do
    binaryContent[i] = string.byte(stringContent, i);
end

-- POST request with binary content
client.WebRequest("http://foo.com/path/to/post", HttpMethod.POST, binaryContent).Then(
    ---@param result WebRequestResponse
    function (result)
        if result.StatusCode == 200 then
            Debug:Log("Success");
        end
    end
);


local jsonContent = {
    username = "fooBar",
    password = "barFoo"
};

--- POST request with Json Content
client.WebRequest("http://foo.com/path/to/post", HttpMethod.POST, jsonContent).Then(
    ---@param result WebRequestResponse
    function (result)
        if result.StatusCode == 200 then
            Debug:Log("Success");
        end
    end
);