painless-php / http-client
PSR-18 Compliant HTTP client classes.
dev-master
2025-06-19 15:17 UTC
Requires
- php: >=8.3
- guzzlehttp/guzzle: ^7.9
- painless-php/http-message: dev-master
- psr/http-client: ^1.0
- psr/http-factory: ^1.1
- psr/http-message: ^2.0
- psr/log: ^3.0
Requires (Dev)
- mockery/mockery: *
- phpstan/phpstan: ^2.1
- phpstan/phpstan-deprecation-rules: ^2.0
- phpunit/phpunit: ^12.2
- spatie/phpunit-watcher: ^1.24
- symfony/var-dumper: ^7.3
This package is auto-updated.
Last update: 2025-06-19 15:18:04 UTC
README
Http messaging related functionality, implementing psr-18.
Installation
composer require painless-php/http-client
Public API
General
- Client
- ClientRequest
- ClientResponse
- ParsedBody
- Redirection
- RequestSettings
- RequestResolution
- RequestResolutionCollection
Middleware
- RequestMiddlewareStack
- ResponseMiddlewareStack
- RequestMiddleware - Manipulate request before it is sent
- LogRequest
- ResponseMiddleware - Manipulate response before it is returned
- LogResponse
- ParseResponseBody
- ExpectResponseCode
Exceptions
-
MessageException - psr-18 compatible exceptions
- ClientException
- CommunicationException
- RequestException
- NetworkException
-
ResponseException - response processing exceptions that can be created by middlewares
- ResponseParsingException
- ResponseContentException
- UnexpectedStatusCodeException
Quickstart
use PainlessPHP\Http\Client\Client; $client = new Client( settings: [ 'timeout' => 20, 'maxRedirections' => 5 ] ); // Send a single request $response = $client->request( method: 'GET', uri: 'https://google.com', body: 'foo', headers: [ 'content-type' => 'text/html' ] ); // Use psr-17 to create a request $request = $client->createRequest( method: 'GET', uri: 'https://google.com', body: 'foo', headers: [ 'content-type' => 'text/html' ] ); // Send a psr-7 RequestInterface request $client->sendRequest($request); // Send multiple psr-7 RequestInterface requests $resolutions = $client->sendRequests([ $client->createRequest('GET', 'https://google.com?param=foo'), $client->createRequest('GET', 'https://google.com?param=bar'), ]);