Library
Module
Module type
Parameter
Class
Class type
Client
is a HTTP/1.1 client.
type response = Http.Response.t * Eio.Buf_read.t
Represents a server host - as ip address or domain name - and an optional port value, e.g. www.example.org:8080, www.reddit.com
Represents HTTP request resource path, e.g. "/shop/purchase", "/shop/items", "/shop/categories/" etc.
type 'a body_disallowed_call =
?version:Http.Version.t ->
?headers:Http.Header.t ->
conn:Eio.Flow.two_way as 'a ->
host ->
resource_path ->
response
body_disallowed_call
denotes HTTP client calls where a request is not allowed to have a request body.
type 'a body_allowed_call =
?version:Http.Version.t ->
?headers:Http.Header.t ->
?body:Body.t ->
conn:Eio.Flow.two_way as 'a ->
host ->
resource_path ->
response
body_allowed_call
denotes HTTP client calls where a request can optionally have a request body.
val call :
?meth:Http.Method.t ->
?version:Http.Version.t ->
?headers:Http.Header.t ->
?body:Body.t ->
conn:Eio.Flow.two_way ->
host ->
resource_path ->
response
val get : 'a body_disallowed_call
val head : 'a body_disallowed_call
val delete : 'a body_disallowed_call
val post : 'a body_allowed_call
val put : 'a body_allowed_call
val patch : 'a body_allowed_call
val read_fixed : response -> string
read_fixed (response,reader)
is body_content
, where body_content
is of length n
if "Content-Length" header exists and is a valid integer value n
in response
. Otherwise body_content
holds all bytes until eof.
val read_chunked : response -> (Body.chunk -> unit) -> Http.Header.t option
read_chunked response chunk_handler
is Some updated_headers
if "Transfer-Encoding" header value is "chunked" in response
and all chunks in reader
are read successfully. updated_headers
is the updated headers as specified by the chunked encoding algorithm in https: //datatracker.ietf.org/doc/html/rfc7230#section-4.1.3.
reader
is updated to reflect the number of bytes read.
Returns None
if Transfer-Encoding
header in headers
is not specified as "chunked"