diff options
| author | Garrett D'Amore <garrett@damore.org> | 2018-08-30 14:23:39 -0700 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2018-08-30 15:28:43 -0700 |
| commit | 0cc96c69b3fce09a9c4a8d467d17cfbda76bc02f (patch) | |
| tree | 855f6995749e56f4a9e69ce7d19437b780d63ba2 /docs/man/nng_http_client_transact.3http.adoc | |
| parent | c96b7665469679563ee642a42d175aa24a957f26 (diff) | |
| download | nng-0cc96c69b3fce09a9c4a8d467d17cfbda76bc02f.tar.gz nng-0cc96c69b3fce09a9c4a8d467d17cfbda76bc02f.tar.bz2 nng-0cc96c69b3fce09a9c4a8d467d17cfbda76bc02f.zip | |
fixes #681 HTTP convenience GET method desired...
This adds a couple of new methods, and related documentation
and test cases.
Diffstat (limited to 'docs/man/nng_http_client_transact.3http.adoc')
| -rw-r--r-- | docs/man/nng_http_client_transact.3http.adoc | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/docs/man/nng_http_client_transact.3http.adoc b/docs/man/nng_http_client_transact.3http.adoc new file mode 100644 index 00000000..a469dc50 --- /dev/null +++ b/docs/man/nng_http_client_transact.3http.adoc @@ -0,0 +1,89 @@ += nng_http_client_transact(3http) +// +// Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> +// Copyright 2018 Capitar IT Group BV <info@capitar.com> +// +// 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 <nng/nng.h> +#include <nng/supplemental/http/http.h> + +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 +`<<nng_http_res_get_data.3http#,nng_http_res_get_data()>>`. + +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, +`<<nng_http_conn_transact.3http#,nng_http_conn_transact()>>`, +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 `<<nng_aio_result.3#,nng_aio_result()>>`. +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] +<<nng_aio_alloc.3#,nng_aio_alloc(3)>>, +<<nng_aio_result.3#,nng_aio_result(3)>>, +<<nng_strerror.3#,nng_strerror(3)>>, +<<nng_http_client_connect.3http#,nng_http_client_connect(3http)>>, +<<nng_http_conn_transact.3http#,nng_http_conn_transact(3http)>>, +<<nng_http_res_get_data.3http#,nng_http_res_get_data(3http)>>, +<<nng.7#,nng(7)>> |
