httpPost (Function)

Signature: httpPost(clientID: int, path: string, body: string, headers: string) -> Result<int, Error>

Description: Makes an HTTP POST request and answers its status code, or an Error on transport failure.

Parameters

  • clientID (int): Client identifier from httpCreateClient
  • path (string): Request path
  • body (string): Request body data
  • headers (string): Additional headers

Returns: Result<int, Error>

Example

fn reply(_method, _path, _headers, _body) = HttpResponse {
    status: 200, headers: "X-Demo: hi\r\n", contentType: "text/plain",
    streamFd: -1, isComplete: true, partialBody: "hello"
}
fn runRequest(client) = {
    let result = toString(httpPost(client, "/", "hello", "Content-Type: text/plain") ?: -1)
    let closed = httpCloseClient(client) ?: -1
    "${result}; client close=${closed}"
}
fn request() = match httpCreateClient("http://127.0.0.1:18898", 1000) {
    Success { value } => runRequest(value)
    Error { message } => "client error: ${message}"
}
fn serve(server) = {
    let result = match httpListen(server, reply) {
        Success => request()
        Error { message } => "listen error: ${message}"
    }
    let stopped = httpStopServer(server) ?: -1
    "${result}; server stop=${stopped}"
}
print(match httpCreateServer(18898, "127.0.0.1") {
    Success { value } => serve(value)
    Error { message } => "server error: ${message}"
})
reply (_method, _path, _headers, _body) = HttpResponse(
    status = 200, headers = "X-Demo: hi\r\n", contentType = "text/plain",
    streamFd = -1, isComplete = true, partialBody = "hello")
runRequest client =
    result = toString (httpPost (client, "/", "hello", "Content-Type: text/plain"))
    closed = httpCloseClient client
    "${result}; client close=${closed}"
request () =
    client = httpCreateClient ("http://127.0.0.1:18898", 1000)
    match client > 0
        true => runRequest client
        false => "client error: ${client}"
serve server =
    listening = httpListen (server, reply)
    result = match listening == 0
        true => request ()
        false => "listen error: ${listening}"
    stopped = httpStopServer server
    "${result}; server stop=${stopped}"
server = httpCreateServer (18898, "127.0.0.1")
match server > 0
    true => print (serve server)
    false => print "server error: ${server}"