HTTP Client

HTTP client functions. More...

Modules

Types
HTTP client data types.
 

Functions

gos_result_t gos_http_open_request (const gos_http_request_t *context, gos_handle_t *handle_ptr)
 Open a HTTP request stream. More...
 
gos_result_t gos_http_get (const gos_http_request_t *context, gos_handle_t *handle_ptr)
 HTTP GET request stream. More...
 
gos_result_t gos_http_post (const gos_http_request_t *context, gos_handle_t *handle_ptr)
 HTTP POST request stream. More...
 
gos_result_t gos_http_add_header (gos_handle_t handle, const char *key, const char *value)
 Add HTTP header to request stream. More...
 
gos_result_t gos_http_write (gos_handle_t handle, const void *data, uint32_t size, bool auto_flush)
 Write data to a HTTP POST request stream. More...
 
gos_result_t gos_http_read (gos_handle_t handle, void *data, uint32_t max_size, uint32_t *bytes_read_ptr)
 Read HTTP GET/POST response stream. More...
 
gos_result_t gos_http_read_with_buffer (gos_handle_t handle, gos_buffer_t *buffer)
 Read HTTP stream data into buffer. More...
 
gos_result_t gos_http_poll (gos_handle_t handle, uint32_t *rx_available_ptr, uint32_t *tx_available_ptr)
 Poll HTTP stream for more response data. More...
 
gos_result_t gos_http_read_status (gos_handle_t handle, uint32_t *status_ptr)
 Complete HTTP request stream and return HTTP status code. More...
 
gos_result_t gos_http_receive_response (gos_handle_t handle, gos_http_response_t *response)
 Receive the HTTP response headers. More...
 
gos_result_t gos_http_receive_response_with_config (gos_handle_t handle, gos_http_response_t *response, const gos_http_response_config_t *config)
 Receive the HTTP response header with specified configuration. More...
 
void gos_http_response_cleanup (gos_http_response_t *response)
 Cleanup a HTTP response. More...
 
gos_result_t gos_http_close (gos_handle_t handle)
 Close HTTP request stream. More...
 

Detailed Description

HTTP client functions.

Function Documentation

◆ gos_http_add_header()

gos_result_t gos_http_add_header ( gos_handle_t  handle,
const char *  key,
const char *  value 
)

Add HTTP header to request stream.

The HTTP request stream should have been previously opened with one of the following:

See Gecko OS Command API documentation: http_add_header.

Note
Stream handles start at 1, max handle value is GOS_MAX_STREAMS
Parameters
[in]handleHandle of opened HTTP request
[in]keyHTTP request header key
[in]valueHTTP request header value
Returns
gos_result_t return of API call
Examples:
network/http_methods/http_delete.c, network/http_methods/http_get.c, network/http_methods/http_head.c, network/http_methods/http_post.c, and network/http_methods/http_put.c.

◆ gos_http_close()

gos_result_t gos_http_close ( gos_handle_t  handle)

Close HTTP request stream.

This closes an opened HTTP stream.

See Gecko OS Command API documentation: stream_close.

Note
Stream handles start at 1, max handle value is GOS_MAX_STREAMS
Parameters
[in]handleHandle of opened HTTP stream to close
Returns
gos_result_t return of API call
Examples:
network/http_methods/http_delete.c, network/http_methods/http_get.c, network/http_methods/http_head.c, network/http_methods/http_post.c, and network/http_methods/http_put.c.

◆ gos_http_get()

gos_result_t gos_http_get ( const gos_http_request_t context,
gos_handle_t handle_ptr 
)

HTTP GET request stream.

This has the same functionality as gos_http_open_request() except a GET request is opened.

After the GET request is opened, gos_http_add_header() may be used to append additional headers to the request.

To receive the request response, use one the following:

Once the response is received use gos_http_read() to ready the response body.

Use gos_http_close() to close the HTTP stream.

See Gecko OS Command API documentation for additionality info: http_get.

Parameters
[in]contextgos_http_request_t Information about the HTTP GET request
[out]handle_ptrStream handle of HTTP GET request
Returns
gos_result_t return of API call

◆ gos_http_open_request()

gos_result_t gos_http_open_request ( const gos_http_request_t context,
gos_handle_t handle_ptr 
)

Open a HTTP request stream.

This allows for opening a HTTP request specified in gos_http_request_t. Once opened a handle is returned. The handle may be used with any of the following APIs:

Note
This API only opens the HTTP request with the server. The one following APIs should be used to receive the response:

Once the response is received use gos_http_read() to ready the response body. If gos_http_receive_response() or gos_http_receive_response_with_config() is used, then 'content_length' of gos_http_response_t contains the amount of data to be read. gos_http_poll() can also be used to determine the amount of data to be read.

Use gos_http_close() to close the HTTP stream.

Parameters
[in]contextgos_http_request_t Information about the HTTP request
[out]handle_ptrStream handle of HTTP request
Returns
gos_result_t return of API call
Examples:
network/http_methods/http_delete.c, network/http_methods/http_get.c, network/http_methods/http_head.c, network/http_methods/http_post.c, and network/http_methods/http_put.c.

◆ gos_http_poll()

gos_result_t gos_http_poll ( gos_handle_t  handle,
uint32_t *  rx_available_ptr,
uint32_t *  tx_available_ptr 
)

Poll HTTP stream for more response data.

This read an open HTTP stream for more response body data.

The HTTP response should then have been previously received with one of the following:

Note
Stream handles start at 1, max handle value is GOS_MAX_STREAMS
Parameters
[in]handleHandle of opened HTTP request
[out]rx_available_ptrPointer to hold number of bytes available to read
[out]tx_available_ptrPointer to hold available TX buffer space
Returns
gos_result_t return of API call

◆ gos_http_post()

gos_result_t gos_http_post ( const gos_http_request_t context,
gos_handle_t handle_ptr 
)

HTTP POST request stream.

This has the same functionality as gos_http_open_request() except a POST request is opened.

After the POST request is opened, gos_http_add_header() may be used to append additional headers to the request.

gos_http_write() is then used to send the HTTP POST data.

Note
If the 'content_length' member of gos_http_request_t is set to '-1', chunked encoding is used. This allows for arbitrary amounts of data to be sent to the server. If 'content_length' is greater than 0 then gos_http_write() should be issued as many times a necessary to write that specified amount of data.

Once all POST data is written, receive the request response using one the following:

Once the response is received use gos_http_read() to ready the response body.

Use gos_http_close() to close the HTTP stream.

This API provides similar functionality to the Command API function http_post.

Note
A complete example showing how to send data using an HTTP POST request with the Command API is available: Sending a POST Request
Parameters
[in]contextgos_http_request_t Information about the HTTP POST request
[out]handle_ptrA handle for the request
Returns
The result of the POST request

◆ gos_http_read()

gos_result_t gos_http_read ( gos_handle_t  handle,
void *  data,
uint32_t  max_size,
uint32_t *  bytes_read_ptr 
)

Read HTTP GET/POST response stream.

The HTTP request stream should have been previously opened with one of the following:

The HTTP response should then have been previously received with one of the following:

This reads the HTTP response body into the given buffer.

See Gecko OS Command API documentation: stream_read.

Note
Stream handles start at 1, max handle value is GOS_MAX_STREAMS
Parameters
[in]handleHandle of opened HTTP request
[out]dataBuffer to hold read data
[in]max_sizeMaximum amount of bytes to read (i.e. size of given buffer)
[out]bytes_read_ptrPointer to hold number of bytes actually read, use NULL if not used
Returns
gos_result_t return of API call
Examples:
network/http_methods/http_delete.c, network/http_methods/http_get.c, network/http_methods/http_post.c, and network/http_methods/http_put.c.

◆ gos_http_read_status()

gos_result_t gos_http_read_status ( gos_handle_t  handle,
uint32_t *  status_ptr 
)

Complete HTTP request stream and return HTTP status code.

The completes a HTTP request and returns the HTTP response status code.

Use gos_http_read() to read the HTTP response body.

Note
The HTTP response headers are discarded with this API, use gos_http_receive_response() to receive the response headers.

See Gecko OS Command API documentation: http_read_status.

Note
Stream handles start at 1, max handle value is GOS_MAX_STREAMS
Parameters
[in]handleHandle of opened HTTP request
[out]status_ptrPointer to hold HTTP status code
Returns
gos_result_t return of API call

◆ gos_http_read_with_buffer()

gos_result_t gos_http_read_with_buffer ( gos_handle_t  handle,
gos_buffer_t buffer 
)

Read HTTP stream data into buffer.

See gos_read_with_buffer() for more information.

Note
Stream handles start at 1, max handle value is GOS_MAX_STREAMS
Parameters
handleStream handle
bufferBuffer to specify how much data to read, then return how much data was read with pointer to data
Returns
gos_result_t result of api call

◆ gos_http_receive_response()

gos_result_t gos_http_receive_response ( gos_handle_t  handle,
gos_http_response_t response 
)

Receive the HTTP response headers.

This completes the HTTP request and returns the HTTP response gos_http_response_t.

Note
Only gos_http_basic_header_t headers are returned, use gos_http_receive_response_with_config() to return other headers.
After calling this API use gos_http_read() to receive the HTTP response body.
Stream handles start at 1, max handle value is GOS_MAX_STREAMS
Parameters
[in]handleHandle of opened HTTP request
[out]responsegos_http_response_t To hold HTTP response
Returns
gos_result_t return of API call
Examples:
network/http_methods/http_delete.c, network/http_methods/http_get.c, network/http_methods/http_head.c, network/http_methods/http_post.c, and network/http_methods/http_put.c.

◆ gos_http_receive_response_with_config()

gos_result_t gos_http_receive_response_with_config ( gos_handle_t  handle,
gos_http_response_t response,
const gos_http_response_config_t config 
)

Receive the HTTP response header with specified configuration.

This completes the HTTP request and returns the HTTP response gos_http_response_t. How the response is returned is specified by the supplied gos_http_response_config_t

Note
After calling this API use gos_http_read() to receive the HTTP response body.
Use gos_http_response_cleanup() to cleanup the HTTP response.
Stream handles start at 1, max handle value is GOS_MAX_STREAMS
Parameters
[in]handleHandle of opened HTTP request
[out]responsegos_http_response_t To hold HTTP response
[in]configgos_http_response_config_t Specifying how to return the response
Returns
gos_result_t return of API call

◆ gos_http_response_cleanup()

void gos_http_response_cleanup ( gos_http_response_t response)

Cleanup a HTTP response.

This cleans up the gos_http_response_t returned by:

Parameters
[in]responsegos_http_response_t to cleanup

◆ gos_http_write()

gos_result_t gos_http_write ( gos_handle_t  handle,
const void *  data,
uint32_t  size,
bool  auto_flush 
)

Write data to a HTTP POST request stream.

The HTTP request stream should have been previously opened with one of the following:

See Gecko OS Command API documentation: stream_write.

Parameters
[in]handleHandle of opened HTTP POST request
[in]dataData to send to server
[in]sizeSize in bytes of data to send
[in]auto_flushtrue to only flush when internal buffer is full, false to send data immediately to server
Returns
gos_result_t return of API call
Examples:
network/http_methods/http_post.c, and network/http_methods/http_put.c.