= nng_http_client_transact(3http) // // Copyright 2018 Staysail Systems, Inc. // Copyright 2018 Capitar IT Group BV // // This document is supplied under the terms of the MIT License, a // copy of which should be located in the distribution where this // file was obtained (LICENSE.txt). A copy of the license may also be // found online at https://opensource.org/licenses/MIT. // == NAME nng_http_client_transact - perform one HTTP transaction == SYNOPSIS [source, c] ---- #include #include void nng_http_client_transact(nng_http_client *client, nng_http_req *req, nng_http_res *res, nng_aio *aio); ---- == DESCRIPTION The `nng_http_client_transact()` function is used to perform a complete HTTP exchange. It creates a new connection using _client_, performs the transaction by sending the request _req_ (and attached body data) to the remote server, then reading the response _res_, and finally closes the connection that it created. The entire response is read, including any associated body, which can subsequently be obtained using `<>`. This function is intended to make creation of client applications easier, by performing multiple asynchronous operations required to complete an entire HTTP transaction. A similar function, `<>`, exists. That function behaves similarily, but uses an existing connection, which can be reused. NOTE: This function does not support reading data sent using chunked transfer encoding, and if the server attempts to do so, the underlying connection will be closed and an `NNG_ENOTSUP` error will be returned. This limitation is considered a bug, and a fix is planned for the future. WARNING: If the remote server tries to send an extremely large buffer, then a corresponding allocation will be made, which can lead to denial of service attacks. Client applications should take care to use this only with reasonably trust-worthy servers. This function returns immediately, with no return value. Completion of the operation is signaled via the _aio_, and the final result may be obtained via `<>`. That result will either be zero or an error code. == RETURN VALUES None. == ERRORS [horizontal] `NNG_ECANCELED`:: The operation was canceled. `NNG_ECLOSED`:: The connection was closed. `NNG_ECONNRESET`:: The peer closed the connection. `NNG_ENOMEM`:: Insufficient free memory to perform the operation. `NNG_ENOTSUP`:: HTTP operations are not supported, or peer sent chunked encoding. `NNG_EPROTO`:: An HTTP protocol error occurred. `NNG_ETIMEDOUT`:: Timeout waiting for data from the connection. == SEE ALSO [.text-left] <>, <>, <>, <>, <>, <>, <>