package cohttp-lwt
-
cohttp-lwt
Legend:
Library
Module
Module type
Parameter
Class
Class type
Library
Module
Module type
Parameter
Class
Class type
The Client
module implements non-pipelined single HTTP client calls. Each call will open a separate Net
connection. For best results, the Body
that is returned should be consumed in order to close the file descriptor in a timely fashion. It will still be finalized by a GC hook if it is not used up, but this can take some additional time to happen.
val call :
?ctx:ctx ->
?headers:Cohttp.Header.t ->
?body:Body.t ->
?chunked:bool ->
Cohttp.Code.meth ->
Uri.t ->
(Cohttp.Response.t * Body.t) Lwt.t
call ?ctx ?headers ?body ?chunked meth uri
will resolve the uri
to a concrete network endpoint using context ctx
. It will then issue an HTTP request with method meth
, adding request headers from headers
if present. If a body
is specified then that will be included with the request, using chunked encoding if chunked
is true. The default is to disable chunked encoding for HTTP request bodies for compatibility reasons.
In most cases you should use the more specific helper calls in the interface rather than invoke this function directly. See head
, get
and post
for some examples.
To avoid leaks, the body needs to be consumed, using the functions provided in the Body
module and, if not necessary, should be explicitly drained calling Body.drain_body
. Leaks are logged as debug messages by the client, these can be enabled activating the debug logging. For example, this can be done as follows in cohttp-lwt-unix
Cohttp_lwt_unix.Debug.activate_debug ();
Logs.set_level (Some Logs.Warning)
Depending on ctx
, the library is able to send a simple HTTP request or an encrypted one with a secured protocol (such as TLS). Depending on how conduit is configured, ctx
might initiate a secured connection with TLS (using ocaml-tls
) or SSL (using ocaml-ssl
), on *:443
or on the specified port by the user. If neitehr ocaml-tls
or ocaml-ssl
are installed on the system, cohttp
/conduit
tries the usual (*:80
) or the specified port by the user in a non-secured way.
val head :
?ctx:ctx ->
?headers:Cohttp.Header.t ->
Uri.t ->
Cohttp.Response.t Lwt.t
val get :
?ctx:ctx ->
?headers:Cohttp.Header.t ->
Uri.t ->
(Cohttp.Response.t * Body.t) Lwt.t
val delete :
?ctx:ctx ->
?body:Body.t ->
?chunked:bool ->
?headers:Cohttp.Header.t ->
Uri.t ->
(Cohttp.Response.t * Body.t) Lwt.t
val post :
?ctx:ctx ->
?body:Body.t ->
?chunked:bool ->
?headers:Cohttp.Header.t ->
Uri.t ->
(Cohttp.Response.t * Body.t) Lwt.t
val put :
?ctx:ctx ->
?body:Body.t ->
?chunked:bool ->
?headers:Cohttp.Header.t ->
Uri.t ->
(Cohttp.Response.t * Body.t) Lwt.t
val patch :
?ctx:ctx ->
?body:Body.t ->
?chunked:bool ->
?headers:Cohttp.Header.t ->
Uri.t ->
(Cohttp.Response.t * Body.t) Lwt.t
val post_form :
?ctx:ctx ->
?headers:Cohttp.Header.t ->
params:(string * string list) list ->
Uri.t ->
(Cohttp.Response.t * Body.t) Lwt.t
val callv :
?ctx:ctx ->
Uri.t ->
(Cohttp.Request.t * Body.t) Lwt_stream.t ->
(Cohttp.Response.t * Body.t) Lwt_stream.t Lwt.t