zelenin / http-client
PSR-18 compatible HTTP client with middleware support
Installs: 1 976
Dependents: 3
Suggesters: 0
Security: 0
Stars: 33
Watchers: 4
Forks: 1
Open Issues: 1
Requires
- php: >=7.1
- dflydev/fig-cookies: ~1.0.2
- psr/http-client: ~1.0
- psr/http-factory: ~1.0
Requires (Dev)
- phpunit/phpunit: ~6.0
- satooshi/php-coveralls: ~1.0.0
- zendframework/zend-diactoros: ~2.0
README
PSR-18 compatible low-level HTTP client with middleware support.
Installation
Composer
The preferred way to install this extension is through Composer.
Either run
php composer.phar require zelenin/http-client "~4.0.0"
or add
"zelenin/http-client": "~4.0.0"
to the require
section of your composer.json
Usage
use Zelenin\HttpClient\ClientFactory; use Zend\Diactoros\Request; use Zend\Diactoros\Uri; $client = (new ClientFactory())->create(); $request = new Request(new Uri('https://example.com/'), 'GET'); $response = $client->sendRequest($request);
Full example with middleware stack
use Zelenin\HttpClient\Middleware\Cookie\CookieRequest; use Zelenin\HttpClient\Middleware\Cookie\CookieResponse; use Zelenin\HttpClient\Middleware\Cookie\FileStorage; use Zelenin\HttpClient\Middleware\Deflate; use Zelenin\HttpClient\Middleware\UserAgent; use Zelenin\HttpClient\MiddlewareClient; use Zelenin\HttpClient\RequestConfig; use Zelenin\HttpClient\Transport\CurlTransport; use Zend\Diactoros\Request; use Zend\Diactoros\ResponseFactory; use Zend\Diactoros\StreamFactory; use Zend\Diactoros\Uri; $streamFactory = new StreamFactory(); $responseFactory = new ResponseFactory(); $cookieStorage = new FileStorage('/tmp/http-client/cookies.storage'); $client = new MiddlewareClient([ new CookieRequest($cookieStorage), new UserAgent(sprintf('HttpClient PHP/%s', PHP_VERSION)), new Deflate($streamFactory), new CookieResponse($cookieStorage), new CurlTransport($streamFactory, $responseFactory, new RequestConfig()), ], $responseFactory); $request = new Request(new Uri('https://example.com/'), 'GET'); $response = $client->sendRequest($request);
Author
Aleksandr Zelenin, e-mail: aleksandr@zelenin.me