\Cake\HttpClient

The end user interface for doing HTTP requests.

Scoped clients

If you're doing multiple requests to the same hostname it's often convenient to use the constructor arguments to create a scoped client. This allows you to keep your code DRY and not repeat hostnames, authentication, and other options.

Doing requests

Once you've created an instance of Client you can do requests using several methods. Each corresponds to a different HTTP method.

  • get()
  • post()
  • put()
  • delete()
  • patch()

Cookie management

Client will maintain cookies from the responses done with a client instance. These cookies will be automatically added to future requests to matching hosts. Cookies will respect the Expires, Path and Domain attributes. You can get the client's CookieCollection using cookies()

You can use the 'cookieJar' constructor option to provide a custom cookie jar instance you've restored from cache/disk. By default an empty instance of Cake\Http\Client\CookieCollection will be created.

Sending request bodies

By default any POST/PUT/PATCH/DELETE request with $data will send their data as application/x-www-form-urlencoded unless there are attached files. In that case multipart/form-data will be used.

When sending request bodies you can use the type option to set the Content-Type for the request:

$http->get('/users', [], ['type' => 'json']);

The type option sets both the Content-Type and Accept header, to the same mime type. When using type you can use either a full mime type or an alias. If you need different types in the Accept and Content-Type headers you should set them manually and not use type

Using authentication

By using the auth key you can use authentication. The type sub option can be used to specify which authentication strategy you want to use. CakePHP comes with a few built-in strategies:

  • Basic
  • Digest
  • Oauth

Using proxies

By using the proxy key you can set authentication credentials for a proxy if you need to use one. The type sub option can be used to specify which authentication strategy you want to use. CakePHP comes with built-in support for basic authentication.

Summary

Methods
Properties
Constants
setConfig()
getConfig()
config()
configShallow()
__construct()
cookies()
addCookie()
get()
post()
put()
patch()
options()
trace()
delete()
head()
send()
buildUrl()
No public properties found
No constants found
_configRead()
_configWrite()
_configDelete()
_doRequest()
_mergeOptions()
_sendRequest()
_createRequest()
_typeHeaders()
_addAuthentication()
_addProxy()
_createAuth()
$_config
$_configInitialized
$_defaultConfig
$_cookies
$_adapter
N/A
No private methods found
No private properties found
N/A

Properties

$_config

$_config : array

Runtime config

Type

array

$_configInitialized

$_configInitialized : boolean

Whether the config property has already been configured with defaults

Type

boolean

$_defaultConfig

$_defaultConfig : array

Default configuration for the client.

Type

array

$_cookies

$_cookies : \Cake\Http\Cookie\CookieCollection

List of cookies from responses made with this client.

Cookies are indexed by the cookie's domain or request host name.

Type

\Cake\Http\Cookie\CookieCollection

Methods

setConfig()

setConfig(string|array  $key, mixed|null  $value = null, boolean  $merge = true) : $this

Sets the config.

Usage

Setting a specific value:

$this->setConfig('key', $value);

Setting a nested value:

$this->setConfig('some.nested.key', $value);

Updating multiple config settings at the same time:

$this->setConfig(['one' => 'value', 'another' => 'value']);

Parameters

string|array $key

The key to set, or a complete array of configs.

mixed|null $value

The value to set.

boolean $merge

Whether to recursively merge or overwrite existing config, defaults to true.

Throws

\Cake\Core\Exception\Exception

When trying to set a key that is invalid.

Returns

$this

getConfig()

getConfig(string|null  $key = null, mixed  $default = null) : mixed

Returns the config.

Usage

Reading the whole config:

$this->getConfig();

Reading a specific value:

$this->getConfig('key');

Reading a nested value:

$this->getConfig('some.nested.key');

Reading with default value:

$this->getConfig('some-key', 'default-value');

Parameters

string|null $key

The key to get or null for the whole config.

mixed $default

The return value when the key does not exist.

Returns

mixed —

Config value being read.

config()

config(string|array|null  $key = null, mixed|null  $value = null, boolean  $merge = true) : mixed

Gets/Sets the config.

Usage

Reading the whole config:

$this->config();

Reading a specific value:

$this->config('key');

Reading a nested value:

$this->config('some.nested.key');

Setting a specific value:

$this->config('key', $value);

Setting a nested value:

$this->config('some.nested.key', $value);

Updating multiple config settings at the same time:

$this->config(['one' => 'value', 'another' => 'value']);

Parameters

string|array|null $key

The key to get/set, or a complete array of configs.

mixed|null $value

The value to set.

boolean $merge

Whether to recursively merge or overwrite existing config, defaults to true.

Throws

\Cake\Core\Exception\Exception

When trying to set a key that is invalid.

Returns

mixed —

Config value being read, or the object itself on write operations.

configShallow()

configShallow(string|array  $key, mixed|null  $value = null) : $this

Merge provided config with existing config. Unlike `config()` which does a recursive merge for nested keys, this method does a simple merge.

Setting a specific value:

$this->configShallow('key', $value);

Setting a nested value:

$this->configShallow('some.nested.key', $value);

Updating multiple config settings at the same time:

$this->configShallow(['one' => 'value', 'another' => 'value']);

Parameters

string|array $key

The key to set, or a complete array of configs.

mixed|null $value

The value to set.

Returns

$this

__construct()

__construct(array  $config = array()) 

Create a new HTTP Client.

Config options

You can set the following options when creating a client:

  • host - The hostname to do requests on.
  • port - The port to use.
  • scheme - The default scheme/protocol to use. Defaults to http.
  • timeout - The timeout in seconds. Defaults to 30
  • ssl_verify_peer - Whether or not SSL certificates should be validated. Defaults to true.
  • ssl_verify_peer_name - Whether or not peer names should be validated. Defaults to true.
  • ssl_verify_depth - The maximum certificate chain depth to traverse. Defaults to 5.
  • ssl_verify_host - Verify that the certificate and hostname match. Defaults to true.
  • redirect - Number of redirects to follow. Defaults to false.
  • adapter - The adapter class name or instance. Defaults to \Cake\Http\Client\Adapter\Curl if curl extension is loaded else \Cake\Http\Client\Adapter\Stream.

Parameters

array $config

Config options for scoped clients.

addCookie()

addCookie(\Cake\Http\Cookie\CookieInterface  $cookie) : $this

Adds a cookie to the Client collection.

Parameters

\Cake\Http\Cookie\CookieInterface $cookie

Cookie object.

Returns

$this

get()

get(string  $url, array  $data = array(), array  $options = array()) : \Cake\Http\Client\Response

Do a GET request.

The $data argument supports a special _content key for providing a request body in a GET request. This is generally not used, but services like ElasticSearch use this feature.

Parameters

string $url

The url or path you want to request.

array $data

The query data you want to send.

array $options

Additional options for the request.

Returns

\Cake\Http\Client\Response

post()

post(string  $url, mixed  $data = array(), array  $options = array()) : \Cake\Http\Client\Response

Do a POST request.

Parameters

string $url

The url or path you want to request.

mixed $data

The post data you want to send.

array $options

Additional options for the request.

Returns

\Cake\Http\Client\Response

put()

put(string  $url, mixed  $data = array(), array  $options = array()) : \Cake\Http\Client\Response

Do a PUT request.

Parameters

string $url

The url or path you want to request.

mixed $data

The request data you want to send.

array $options

Additional options for the request.

Returns

\Cake\Http\Client\Response

patch()

patch(string  $url, mixed  $data = array(), array  $options = array()) : \Cake\Http\Client\Response

Do a PATCH request.

Parameters

string $url

The url or path you want to request.

mixed $data

The request data you want to send.

array $options

Additional options for the request.

Returns

\Cake\Http\Client\Response

options()

options(string  $url, mixed  $data = array(), array  $options = array()) : \Cake\Http\Client\Response

Do an OPTIONS request.

Parameters

string $url

The url or path you want to request.

mixed $data

The request data you want to send.

array $options

Additional options for the request.

Returns

\Cake\Http\Client\Response

trace()

trace(string  $url, mixed  $data = array(), array  $options = array()) : \Cake\Http\Client\Response

Do a TRACE request.

Parameters

string $url

The url or path you want to request.

mixed $data

The request data you want to send.

array $options

Additional options for the request.

Returns

\Cake\Http\Client\Response

delete()

delete(string  $url, mixed  $data = array(), array  $options = array()) : \Cake\Http\Client\Response

Do a DELETE request.

Parameters

string $url

The url or path you want to request.

mixed $data

The request data you want to send.

array $options

Additional options for the request.

Returns

\Cake\Http\Client\Response

head()

head(string  $url, array  $data = array(), array  $options = array()) : \Cake\Http\Client\Response

Do a HEAD request.

Parameters

string $url

The url or path you want to request.

array $data

The query string data you want to send.

array $options

Additional options for the request.

Returns

\Cake\Http\Client\Response

send()

send(\Cake\Http\Client\Request  $request, array  $options = array()) : \Cake\Http\Client\Response

Send a request.

Used internally by other methods, but can also be used to send handcrafted Request objects.

Parameters

\Cake\Http\Client\Request $request

The request to send.

array $options

Additional options to use.

Returns

\Cake\Http\Client\Response

buildUrl()

buildUrl(string  $url, string|array  $query = array(), array  $options = array()) : string

Generate a URL based on the scoped client options.

Parameters

string $url

Either a full URL or just the path.

string|array $query

The query data for the URL.

array $options

The config options stored with Client::config()

Returns

string —

A complete url with scheme, port, host, and path.

_configRead()

_configRead(string|null  $key) : mixed

Reads a config key.

Parameters

string|null $key

Key to read.

Returns

mixed

_configWrite()

_configWrite(string|array  $key, mixed  $value, boolean|string  $merge = false) : void

Writes a config key.

Parameters

string|array $key

Key to write to.

mixed $value

Value to write.

boolean|string $merge

True to merge recursively, 'shallow' for simple merge, false to overwrite, defaults to false.

Throws

\Cake\Core\Exception\Exception

if attempting to clobber existing config

_configDelete()

_configDelete(string  $key) : void

Deletes a single config key.

Parameters

string $key

Key to delete.

Throws

\Cake\Core\Exception\Exception

if attempting to clobber existing config

_doRequest()

_doRequest(string  $method, string  $url, mixed  $data, array  $options) : \Cake\Http\Client\Response

Helper method for doing non-GET requests.

Parameters

string $method

HTTP method.

string $url

URL to request.

mixed $data

The request body.

array $options

The options to use. Contains auth, proxy, etc.

Returns

\Cake\Http\Client\Response

_mergeOptions()

_mergeOptions(array  $options) : array

Does a recursive merge of the parameter with the scope config.

Parameters

array $options

Options to merge.

Returns

array —

Options merged with set config.

_sendRequest()

_sendRequest(\Cake\Http\Client\Request  $request, array  $options) : \Cake\Http\Client\Response

Send a request without redirection.

Parameters

\Cake\Http\Client\Request $request

The request to send.

array $options

Additional options to use.

Returns

\Cake\Http\Client\Response

_createRequest()

_createRequest(string  $method, string  $url, mixed  $data, array  $options) : \Cake\Http\Client\Request

Creates a new request object based on the parameters.

Parameters

string $method

HTTP method name.

string $url

The url including query string.

mixed $data

The request body.

array $options

The options to use. Contains auth, proxy, etc.

Returns

\Cake\Http\Client\Request

_typeHeaders()

_typeHeaders(string  $type) : array

Returns headers for Accept/Content-Type based on a short type or full mime-type.

Parameters

string $type

short type alias or full mimetype.

Throws

\Cake\Core\Exception\Exception

When an unknown type alias is used.

Returns

array —

Headers to set on the request.

_addAuthentication()

_addAuthentication(\Cake\Http\Client\Request  $request, array  $options) : \Cake\Http\Client\Request

Add authentication headers to the request.

Uses the authentication type to choose the correct strategy and use its methods to add headers.

Parameters

\Cake\Http\Client\Request $request

The request to modify.

array $options

Array of options containing the 'auth' key.

Returns

\Cake\Http\Client\Request

The updated request object.

_addProxy()

_addProxy(\Cake\Http\Client\Request  $request, array  $options) : \Cake\Http\Client\Request

Add proxy authentication headers.

Uses the authentication type to choose the correct strategy and use its methods to add headers.

Parameters

\Cake\Http\Client\Request $request

The request to modify.

array $options

Array of options containing the 'proxy' key.

Returns

\Cake\Http\Client\Request

The updated request object.

_createAuth()

_createAuth(array  $auth, array  $options) : mixed

Create the authentication strategy.

Use the configuration options to create the correct authentication strategy handler.

Parameters

array $auth

The authentication options to use.

array $options

The overall request options to use.

Throws

\Cake\Core\Exception\Exception

when an invalid strategy is chosen.

Returns

mixed —

Authentication strategy instance.