# &develguide;

## Introduction

This module provides a set of API functions that other modules can use in order to integrate with HTTP services.

## Available Functions

### `int http_connect(msg, connection, url, result, content_type, post)`

Sends HTTP GET or POST request to a given connection. If content_type and post are NULL GET will be used. If post is not null the data will be POSTed using the specified content_type.

Returns the status code of the HTTP response (if >= 100), or a curl error code (if < 100)

Meaning of the parameters is as follows:

- struct sip_msg *msg

  The current sip message structure.

- const str *connection

  The name of a preset http_con connection to use for this query.

- const str *url

  A string that will be appended to the base URL specified in the connection. This parameter can be NULL, which means nothing will be appended to the base URL.

- str *result

  A pointer to a string that will contain the response body. On success, the data is allocated in pkg memory by the http_client module and must be freed by the caller.

- const char *content_type

  A null-terminated string specifying the content type to place in a Content-Type header. Use NULL when a message body is not required.

- const str *post

  A string containing the message body to send. Use NULL when a message body is not required.

### `int http_connection_exists(str *connection)`

Check if a connection definition exists. Connections are defined as modparam's in the http_client modules.

Returns 1 if the connection exists, 0 if a connection with the given name can't be found.

### `int http_query(msg, url, dest, post)`

Sends a HTTP GET or POST request to a given connection. If post data is defined, POST will be used, otherwise GET. The default settings defined as module params of the http_client module will be used for the connection.

Meaning of the parameters is as follows:

- struct sip_msg *msg

  The current SIP message structure.

- const char *url

  A string that will be used as the URL specified in the connection.

- str *dest

  A pointer to a string that will contain the first line of the response body. On success, the data is allocated in pkg memory by the http_client module and must be freed by the caller.

- const char *post

  If not null, the data will be posted to the URL.

### `http_get_content_type(str connection)`

Get the content-type of the last result for this connection. This will be something like "text/html" for html or "application/json" for JSON data.

Result will be a pointer to a char string (char *). This is per process, so the connection will have to be done in the same process. Returns a NULL pointer if the connection does not exist or there's no previous connection data delivered.