jbzoo / http-client
Simple HTTP-client, wrapper around Guzzle and rmccue/requests
Installs: 145 776
Dependents: 6
Suggesters: 0
Security: 0
Stars: 5
Watchers: 3
Forks: 1
Open Issues: 0
Requires
- php: ^8.1
- ext-json: *
- jbzoo/data: ^7.1
- jbzoo/event: ^7.0
- jbzoo/utils: ^7.1
Requires (Dev)
- guzzlehttp/guzzle: >=7.5.0
- jbzoo/toolbox-dev: ^7.1
- rmccue/requests: >=2.0.10
Suggests
- guzzlehttp/guzzle: Recommended default http-driver
- jbzoo/event: ^7.0
- rmccue/requests: Only if you can't use guzzle guzzlehttp/guzzle^7.5.0
README
Just make HTTP requests in one line and don't care about terrible syntax of GuzzleHttp ;)
Install
composer require guzzlehttp/guzzle --no-update # Recommended, but not required
composer require jbzoo/http-client
Usage
use JBZoo\HttpClient\HttpClient; // Configure client (no options required!) $httpClient = new HttpClient([ 'auth' => [ // Simple HTTP auth 'http-user-name', 'http-password' ], 'headers' => [ // Your custom headers 'X-Custom-Header' => 42, ], 'driver' => 'auto', // (Auto|Guzzle5|Guzzle6|Rmccue) 'timeout' => 10, // Wait in seconds 'verify' => false, // Check cert for SSL 'exceptions' => false, // Show exceptions for statuses 4xx and 5xx 'allow_redirects' => true, // Show real 3xx-header or result? 'max_redirects' => 10, // How much to redirect? 'user_agent' => "It's me", // Custom UserAgent ]); // Just request $response = $httpClient->request('http://my.site.com/', [ 'key-1' => 'value-1', 'key-2' => 'value-2' ], 'post');
Methods of response
// Get code $code = $response->getCode(); $code = $response->code; $code = $response['code']; // Get headers $headers = $response->getHeaders(); $headers = $response->headers; $headers = $response['headers']; $header = $response->getHeader('X-Custom-Header-Response'); $header = $response->find('headers.x-custom-header-response', 'default-value', 'trim'); // Get body $body = $response->getBody(); $body = $response->body; $body = $response['body']; // Get body like JSON (see JBZoo/Data lib) $json = $response->getJSON(); $value = $json->get('key', 'default', 'trim'); $value = $json->find('key.nested', 'default', 'trim');
Asynchronous requests (curl_multi_* for parallels)
use JBZoo\HttpClient\HttpClient; $httpClient = new HttpClient(); $results = $httpClient->multiRequest(array( 'request_0' => 'http://mockbin.org/request', 'request_1' => ['http://mockbin.org/request', [ 'args' => ['key' => 'value'] ]], 'request_2' => ['http://mockbin.org/request', [ 'method' => 'post', 'args' => ['key' => 'value'], 'headers' => [ 'X-Custom-Header' => 42, ], 'timeout' => 10, 'verify' => false, 'exceptions' => false, 'allow_redirects' => true, 'max_redirects' => 10, 'user_agent' => 'JBZoo/Http-Client v1.x-dev' ]] ]); $results['request_0']->getBody(); $results['request_1']->getBody(); $results['request_2']->getBody();
Unit tests and check code style
make update make test-all
License
MIT