# http

(plugins.http)

## Overview

The `HttpClient` plugin allows the creation of `HttpClient` objects to perform HTTP requests, functioning like a web browser without a user interface, with session binding capabilities. It supports operations such as creating and configuring clients, fetching media data, and retrieving page HTML. The plugin provides several return types, including various HTTP request and response objects, cookies, configurations, and HTTP status codes.

`HttpClient` objects can be created for executing multiple requests in the same server session. Users must close these client objects after usage to free resources. Configurations for `HttpClient` instances can also be created, allowing customization of request settings. For fetching binary media data like images, the `getMediaData(url)` method is available, ensuring compatibility with HTTPS by requiring known certificates or enabling prompts for unknown ones. To fetch the entire HTML content of a page, the `getPageData(url)` method can be used, with similar considerations for HTTPS certificates.

## **Returned Types**

[PatchRequest](https://docs.servoy.com/reference/servoyextensions/server-plugins/http/patchrequest),[PostRequest](https://docs.servoy.com/reference/servoyextensions/server-plugins/http/postrequest),[PutRequest](https://docs.servoy.com/reference/servoyextensions/server-plugins/http/putrequest),[GetRequest](https://docs.servoy.com/reference/servoyextensions/server-plugins/http/getrequest),[DeleteRequest](https://docs.servoy.com/reference/servoyextensions/server-plugins/http/deleterequest),[OptionsRequest](https://docs.servoy.com/reference/servoyextensions/server-plugins/http/optionsrequest),[HeadRequest](https://docs.servoy.com/reference/servoyextensions/server-plugins/http/headrequest),[TraceRequest](https://docs.servoy.com/reference/servoyextensions/server-plugins/http/tracerequest),[Cookie](https://docs.servoy.com/reference/servoyextensions/server-plugins/http/cookie),[Response](https://docs.servoy.com/reference/servoyextensions/server-plugins/http/response),[HttpClient](https://docs.servoy.com/reference/servoyextensions/server-plugins/http/httpclient),[HttpClientConfig](https://docs.servoy.com/reference/servoyextensions/server-plugins/http/httpclientconfig),[HTTP\_STATUS](https://docs.servoy.com/reference/servoyextensions/server-plugins/http/http_status),[JSFileUpload](https://docs.servoy.com/reference/servoyextensions/server-plugins/http/jsfileupload),

## Methods Summarized

| Type                                                                                                        | Name                                                       | Summary                                                                                                                                                                                                      |
| ----------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [HttpClient](https://docs.servoy.com/reference/servoyextensions/server-plugins/http/httpclient)             | [createNewHttpClient()](#createnewhttpclient)              | Create an http client (like a web browser with session binding) usable todo multiple request/posts in same server session .                                                                                  |
| [HttpClient](https://docs.servoy.com/reference/servoyextensions/server-plugins/http/httpclient)             | [createNewHttpClient(config)](#createnewhttpclient-config) | Create an http client (like a web browser with session binding) usable todo multiple request/posts in same server session.                                                                                   |
| [HttpClientConfig](https://docs.servoy.com/reference/servoyextensions/server-plugins/http/httpclientconfig) | [createNewHttpClientConfig()](#createnewhttpclientconfig)  | Create a http client config                                                                                                                                                                                  |
| [Array](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/array)                                  | [getMediaData(url)](#getmediadata-url)                     | Get media (binary data) such as images in a variable.                                                                                                                                                        |
| [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string)                                | [getPageData(url)](#getpagedata-url)                       | Get all page html in a variable, if this url is an https url that uses certificates unknown to Java you must make sure that those server certificates are stored in the cacerts of the java vm that is used. |

## Methods Detailed

### createNewHttpClient()

Create an http client (like a web browser with session binding) usable todo multiple request/posts in same server session\
.\
WARNING: Make sure you call client.close() on it after you used this client object to clean up resources.\
Starting a HTTPClient is the same as starting an actual browser without UI!

**Returns:** [HttpClient](https://docs.servoy.com/reference/servoyextensions/server-plugins/http/httpclient) A new HttpClient instance for making multiple HTTP requests within the same session.

**Sample**

```js
var client = plugins.http.createNewHttpClient();
```

### createNewHttpClient(config)

Create an http client (like a web browser with session binding) usable todo multiple request/posts in same server session.

WARNING: Make sure you call client.close() on it after you used this client object to clean up resources.\
Starting a HTTPClient is the same as starting an actual browser without UI!

**Parameters**

* [HttpClientConfig](https://docs.servoy.com/reference/servoyextensions/server-plugins/http/httpclientconfig) **config** httpclient config

**Returns:** [HttpClient](https://docs.servoy.com/reference/servoyextensions/server-plugins/http/httpclient) A new HttpClient instance configured with the specified HttpClientConfig.

**Sample**

```js
var client = plugins.http.createNewHttpClient(config);
```

### createNewHttpClientConfig()

Create a http client config

**Returns:** [HttpClientConfig](https://docs.servoy.com/reference/servoyextensions/server-plugins/http/httpclientconfig) A new HttpClientConfig instance for customizing HTTP client behavior.

**Sample**

```js
var config = plugins.http.createNewHttpClientConfig();
```

### getMediaData(url)

Get media (binary data) such as images in a variable. It also supports gzip-ed content.\
If this url is an https url that uses certificates unknown to Java\
then you must make sure that those server certificates are stored in the cacerts of the java vm that is used

**Parameters**

* [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string) **url** ;

**Returns:** [Array](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/array) The media content from the specified URL as a byte array.

**Sample**

```js
var image_byte_array = plugins.http.getMediaData('http://www.cnn.com/cnn.gif');
```

### getPageData(url)

Get all page html in a variable, if this url is an https url that uses certificates unknown to Java you must make sure that those server certificates are stored in the cacerts of the java vm that is used.

**Parameters**

* [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string) **url** ;

**Returns:** [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string) The content of the page at the specified URL as a string.

**Sample**

```js
// get data using a default connection
var pageData = plugins.http.getPageData('http://www.cnn.com');
```

***
