cURL Client¶
This client uses cURL PHP extension.
Installation¶
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
Usage¶
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());
Configuring Client¶
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:
- CURLOPT_CUSTOMREQUEST
- CURLOPT_FOLLOWLOCATION
- CURLOPT_HEADER
- CURLOPT_HTTP_VERSION
- CURLOPT_HTTPHEADER
- CURLOPT_NOBODY
- CURLOPT_POSTFIELDS
- CURLOPT_RETURNTRANSFER
- CURLOPT_URL
- CURLOPT_USERPWD
Further reading¶
- 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.