HttpClient is a smart Guzzle wrapper provides convenient method chaining, global request options, and magic methods to customize request options.
$ composer require elfsundae/httpclientuse ElfSundae\HttpClient;$html = (new HttpClient)->fetchContent('http://httpbin.org');
$data = (new HttpClient)->fetchJson('https://httpbin.org/ip');$client = HttpClient::create('https://httpbin.org')
->catchExceptions(true)
->httpErrors(false)
->auth(['user', 'passwd']);
$query = $client->query(['foo' => 'bar'])->getJson('/get');
$form = $client->formParams(['foo' => 'bar'])->postJson('/post');
$json = $client->json(['foo' => 'bar'])->putJson('/put');
$download = $client->saveTo('image.png')->get('/image/png');
$file = fopen('image.png', 'r');
$uploadBody = $client->body($file)->postJson('/post');
$multipart = [
'foo' => 'bar',
'file' => $file,
'image' => [
'contents' => fopen('image.png', 'r'),
'filename' => 'filename.png',
],
];
$formData = $client->multipart($multipart)->postJson('/post');$promise = $client->json($data)->getAsync('/get');
$promise = $client->formParams($data)->postAsync('/post');Using the option method:
$client
->option('cert', $cert)
->option([
'debug' => true,
'headers.Content-Type' => 'application/json',
]);Or using camelCase of any option name as a method on the client:
$client
->allowRedirects(false)
->timeout(20)
->cookies($cookieJar)
->headers([
'X-Foo' => 'foo',
]);In addition, you may use header, accept, acceptJson, userAgent or contentType to set request headers:
$client
->header('X-Foo', 'foo');
->header('X-Bar', 'bar');
->acceptJson()
->contentType('text/plain')
->userAgent('HttpClient/2.0')The static setDefaultOptions method can be used to configure default options for every new client instance:
HttpClient::setDefaultOptions([
'catch_exceptions' => true,
'http_errors' => false,
'connect_timeout' => 5,
'timeout' => 20,
'headers.User-Agent' => 'HttpClient/2.0',
]);The catchExceptions method determines whether to catch Guzzle exceptions or not.
$response = $client->catchExceptions(true)->get('/api/path');
try {
$response = $client->catchExceptions(false)->get('/api/path');
} catch (Exception $e) {
// ...
}$ composer testThis package is open-sourced software licensed under the MIT License.