HTTP client
Applications

## Macros

#define | LWIP_HTTPC_HAVE_FILE_IO 0
#define | HTTP_DEFAULT_PORT LWIP_IANA_PORT_HTTP

## Typedefs

typedef enum ehttpc_result | httpc_result_t
typedef void(* | httpc_result_fn) (void *arg, httpc_result_t httpc_result, u32_t rx_content_len, u32_t srv_res, err_t err)
typedef err_t(* | httpc_headers_done_fn) (httpc_state_t *connection, void *arg, struct pbuf *hdr, u16_t hdr_len, u32_t content_len)

## Enumerations

enum | ehttpc_result { HTTPC_RESULT_OK = 0, HTTPC_RESULT_ERR_UNKNOWN = 1, HTTPC_RESULT_ERR_CONNECT = 2, HTTPC_RESULT_ERR_HOSTNAME = 3, HTTPC_RESULT_ERR_CLOSED = 4, HTTPC_RESULT_ERR_TIMEOUT = 5, HTTPC_RESULT_ERR_SVR_RESP = 6, HTTPC_RESULT_ERR_MEM = 7, HTTPC_RESULT_LOCAL_ABORT = 8, HTTPC_RESULT_ERR_CONTENT_LEN = 9 }

## Functions

err_t | httpc_get_file (const ip_addr_t *server_addr, u16_t port, const char *uri, const httpc_connection_t *settings, altcp_recv_fn recv_fn, void *callback_arg, httpc_state_t **connection)
err_t | httpc_get_file_dns (const char *server_name, u16_t port, const char *uri, const httpc_connection_t *settings, altcp_recv_fn recv_fn, void *callback_arg, httpc_state_t **connection)

## Detailed Description

## Macro Definition Documentation

## HTTP_DEFAULT_PORT

#define HTTP_DEFAULT_PORT LWIP_IANA_PORT_HTTP

The default TCP port used for HTTP

## LWIP_HTTPC_HAVE_FILE_IO

#define LWIP_HTTPC_HAVE_FILE_IO 0

HTTPC_HAVE_FILE_IO: define this to 1 to have functions downloading directly to disk via fopen/fwrite. These functions are example implementations of the interface only.

## Typedef Documentation

## httpc_headers_done_fn

typedef err_t(* httpc_headers_done_fn) (httpc_state_t *connection, void *arg, struct pbuf *hdr, u16_t hdr_len, u32_t content_len)

Prototype of http client callback: called when the headers are received

Parameters

  connection | http client connection
  arg | argument specified when initiating the request
  hdr | header pbuf(s) (may contain data also)
  hdr_len | length of the headers in 'hdr'
  content_len | content length as received in the headers (-1 if not received)

Returns
  if != ERR_OK is returned, the connection is aborted

## httpc_result_fn

typedef void(* httpc_result_fn) (void *arg, httpc_result_t httpc_result, u32_t rx_content_len, u32_t srv_res, err_t err)

Prototype of a http client callback function

Parameters

  arg | argument specified when initiating the request
  httpc_result | result of the http transfer (see enum httpc_result_t)
  rx_content_len | number of bytes received (without headers)
  srv_res | this contains the http status code received (if any)
  err | an error returned by internal lwip functions, can help to specify the source of the error but must not necessarily be != ERR_OK

## httpc_result_t

typedef enum ehttpc_result httpc_result_t

HTTP client result codes

## Enumeration Type Documentation

## ehttpc_result

enum ehttpc_result

HTTP client result codes

Enumerator
HTTPC_RESULT_OK | File successfully received
HTTPC_RESULT_ERR_UNKNOWN | Unknown error
HTTPC_RESULT_ERR_CONNECT | Connection to server failed
HTTPC_RESULT_ERR_HOSTNAME | Failed to resolve server hostname
HTTPC_RESULT_ERR_CLOSED | Connection unexpectedly closed by remote server
HTTPC_RESULT_ERR_TIMEOUT | Connection timed out (server didn't respond in time)
HTTPC_RESULT_ERR_SVR_RESP | Server responded with an error code
HTTPC_RESULT_ERR_MEM | Local memory error
HTTPC_RESULT_LOCAL_ABORT | Local abort
HTTPC_RESULT_ERR_CONTENT_LEN | Content length mismatch

## Function Documentation

## httpc_get_file()

err_t httpc_get_file | ( | const ip_addr_t * | server_addr,
|  | u16_t | port,
|  | const char * | uri,
|  | const httpc_connection_t * | settings,
|  | altcp_recv_fn | recv_fn,
|  | void * | callback_arg,
|  | httpc_state_t ** | connection
| ) |  |

HTTP client API: get a file by passing server IP address

Parameters

  server_addr | IP address of the server to connect
  port | tcp port of the server
  uri | uri to get from the server, remember leading "/"!
  settings | connection settings (callbacks, proxy, etc.)
  recv_fn | the http body (not the headers) are passed to this callback
  callback_arg | argument passed to all the callbacks
  connection | retrieves the connection handle (to match in callbacks)

Returns
  ERR_OK if starting the request succeeds (callback_fn will be called later) or an error code

## httpc_get_file_dns()

err_t httpc_get_file_dns | ( | const char * | server_name,
|  | u16_t | port,
|  | const char * | uri,
|  | const httpc_connection_t * | settings,
|  | altcp_recv_fn | recv_fn,
|  | void * | callback_arg,
|  | httpc_state_t ** | connection
| ) |  |

HTTP client API: get a file by passing server name as string (DNS name or IP address string)

Parameters

  server_name | server name as string (DNS name or IP address string)
  port | tcp port of the server
  uri | uri to get from the server, remember leading "/"!
  settings | connection settings (callbacks, proxy, etc.)
  recv_fn | the http body (not the headers) are passed to this callback
  callback_arg | argument passed to all the callbacks
  connection | retrieves the connection handle (to match in callbacks)

Returns
  ERR_OK if starting the request succeeds (callback_fn will be called later) or an error code