This client uses cURL PHP extension.
To install the cURL client, run:
$ composer require php-http/curl-client
This client does not come with a PSR-7 implementation out of the box, so you have to install one as well (for example Guzzle PSR-7):
$ composer require guzzlehttp/psr7
In order to provide full interoperability, message implementations are accessed through factories. Message factories for Laminas Diactoros (and its abandoned predecessor Zend Diactoros), Guzzle PSR-7 and `Slim Framework`_ are available in the message component:
$ composer require php-http/message
Alternatively you can install the discovery layer to be able to automatically find installed resources, like factories:
$ composer require php-http/discovery
The cURL client needs a message factory and a stream factory in order to to work. You can either specify the factory explicitly:
use Http\Client\Curl\Client; use Http\Message\MessageFactory\DiactorosMessageFactory; use Http\Message\StreamFactory\DiactorosStreamFactory; $client = new Client(new DiactorosMessageFactory(), new DiactorosStreamFactory());
Or you can use Discovery:
use Http\Client\Curl\Client; use Http\Discovery\MessageFactoryDiscovery; use Http\Discovery\StreamFactoryDiscovery; $client = new Client(MessageFactoryDiscovery::find(), StreamFactoryDiscovery::find());
You can use cURL options to configure Client:
use Http\Client\Curl\Client; use Http\Discovery\MessageFactoryDiscovery; use Http\Discovery\StreamFactoryDiscovery; $options = [ CURLOPT_CONNECTTIMEOUT => 10, // The number of seconds to wait while trying to connect. ]; $client = new Client(MessageFactoryDiscovery::find(), StreamFactoryDiscovery::find(), $options);
The following options can not be changed in the set up. Most of them are to be provided with the request instead:
Use plugins to customize the way HTTP requests are sent and responses processed by following redirects, adding Authentication or Cookie headers and more.
Learn how you can decouple your code from any PSR-7 implementation by using the HTTP factories.