Http:post(uri, [parameters])


Send an asynchronous POST request to the connected HTTP server at a specific resource.

Sending the POST request and receiveing the HTTP response is done by a Task asynchronously (other Tasks will be executed concurrently without blocking execution flow)

Parameters

uri

A string representing the resource on the server to POST parameters to.

[parameters]

An optional table (for multipart/form-data content) or a string (for raw data content) that contains parameters to be sent with the request. Each key of the provided table must be a string (representing the parameter name) and each value represents the value for the corresponding parameter (a string or a File object).

Return value


This method return a Task instance. Once the Task has finished, it will return two values :
  • The first value is the Http instance used for the POST request.
  • The second value is nil in case of error or a table that contains the server response, with the following fields
    • "content" : a string containing the body part of the HTTP response
    • "elapsed" : a number representing the elapsed time to get the response
    • "status" : a number containing the HTTP response status
    • "reason" : a string containing HTTP response status text
    • "ok" : a boolean value indicating if the POST request succeeded
    • "headers" : a table containing a pair of strings(header field names of the HTTP response as key and content as values)
    • "cookies" : a table containing a pair of strings(cookies names of the HTTP response as key and content as values)

Example

local net = require "net" local client = net.Http("https://reqbin.com") local data = [[{ "Id": 12345, "Customer": "John Smith", "Quantity": 1, "Price": 10.00 }]] -- make a POST request, and after its terminated, call the provided function, to process the response client:post("/echo/post/json", data).after = function (self, response) if not response then error(net.error) end print(response.content) end waitall()