Module ahttp_client
Data Types
backend()
backend() = gen_tcp | ssl
connection()
abstract datatype: connection()
data_response()
data_response() = {data, reference(), binary()}
done_response()
done_response() = {done, reference()}
error_tuple()
error_tuple() = {error, {backend(), term()}}
header_continuation_response()
header_continuation_response() = {header_continuation, reference(), {binary(), binary()}}
header_response()
header_response() = {header, reference(), {binary(), binary()}}
host()
host() = binary() | string()
option()
option() = gen_tcp:option() | ssl:tls_client_option() | {parse_headers, [binary()]}
protocol()
protocol() = http | https
response()
response() = status_response() | header_response() | header_continuation_response() | data_response() | done_response()
socket_message()
socket_message() = {tcp, inet:socket(), binary()} | {ssl, ssl:sslsocket(), binary()}
status_response()
status_response() = {status, reference(), 0..999}
Function Index
| close/1 | Closes the connection. |
| connect/4 | Connects to the http(s) server. |
| recv/2 | Receive and parse a number of bytes from the http connection. |
| request/5 | Makes a http request using given method on provided path. |
| stream/2 | This function should be used when in active mode in order to process socket messages. |
| stream_request_body/3 | Uploads a chunk of request body. |
Function Details
close/1
close(Conn::connection()) -> ok | error_tuple()
Conn: the connection
returns: Either ok or an error tuple.
Closes the connection.
connect/4
connect(Protocol::protocol(), Host::host(), Port::inet:port_number(), Options::[option()]) -> {ok, connection()} | error_tuple()
Protocol: the protocol, either http or httpsHost: the server hostnamePort: the server port number, usually 80 (http) or 443 (https)Options: the property list with http client and connection options
returns: Either a http connection result tuple or an error tuple
Connects to the http(s) server.
The Host parameter may be a fully qualified host name or a string
containing a valid dotted pair IP address. (Currently, only IPv4 is
supported). Host can be also a binary.
The Options can be used for providing connection options such as SSL
{verify, verify_none}, gen_tcp options such as {active, false} and ahttp_client
{parse_headers, [<<"HeaderName">>]}.
recv/2
recv(Conn::connection(), Len::non_neg_integer()) -> {ok, connection(), [response()]} | error_tuple()
Conn: the connectionLen: the number of bytes will be received, when using 0 all pending bytes are received
returns: Either an ok tuple with the updated connection and a list of responses or an error tuple.
Receive and parse a number of bytes from the http connection.
This function should be used when the connection has been opened using
{active, false}.
See also stream/2 for more information about the responses list.
request/5
request(Conn::connection(), Method::iodata(), Path::iodata(), Headers::[iodata()], Body::binary() | undefined | nil | stream) -> {ok, connection(), reference()} | error_tuple()
Conn: the connectionMethod: a http method such as “GET”, “POST”, “PUT”, etc…Path: the path to the http resource, such as “/”Headers: a list of headersBody: the body that is sent to the server, may be undefined or nil when there is no
body
returns: Either a result tuple with the updated http connection and a reference to the http request, or an error tuple.
Makes a http request using given method on provided path.
When using methods such as GET the body should be omited using either undefined or
nil (they are both equivalent).
When uploading a smaller body (a single binary that fits in memory) the body binary can be provided.
stream option can be used with stream_request_body/3 in order to upload a bigger
binary in streaming mode. This option should be combined with Content-Length header.
As soon as the request is sent to the server, a tuple such as {ok, Conn, Ref} is
returned, otherwise an error tuple is returned, such as
{error, {gen_tcp, econnrefused}}.
The returned connection should be used for the next call, such as to stream/2
(when using active mode) or recv/3 (when using passive mode).
Ref is meant to identify a single request, so any response to a specific request will
be identified from the same reference.
stream/2
stream(Conn::connection(), Msg::socket_message()) -> {ok, connection(), [response()]} | {ok, connection(), closed} | unknown | error_tuple()
Conn: the connectionMsg: a received message
returns: Either a list of responses, unknown or an error tuple.
This function should be used when in active mode in order to process socket messages.
If a socket message is streamed using this function, a tuple with a list of http responses is returned (e.g. `{ok, UpdatedConn, Responses}``, or an error tuple.
Otherwise unknown is returned, that means that the message is not a socket message
tied to the open connection, and it should be handled in some other way.
The first returned response to a new request is a status {status, Ref, 200} for
a successful response. After that headers and data may follow.
Since the response might span multiple socket messages, stream/2 may be called
multiple times. Each time the latest UpdatedConn must be used.
stream_request_body/3
stream_request_body(Conn::connection(), Ref::reference(), BodyChunk::binary()) -> ok | error_tuple()
Conn: the connectionRef: the reference to the pending requestBodyChunk: a chunk of the body that will be sent
returns: Either ok or an error tuple.
Uploads a chunk of request body.
This function should be used when stream has been used as Body parameter.