103 |
- |
1 |
Guzzle, PHP HTTP client
|
|
|
2 |
=======================
|
|
|
3 |
|
|
|
4 |
[](https://travis-ci.org/guzzle/guzzle)
|
|
|
5 |
|
|
|
6 |
Guzzle is a PHP HTTP client that makes it easy to send HTTP requests and
|
|
|
7 |
trivial to integrate with web services.
|
|
|
8 |
|
|
|
9 |
- Simple interface for building query strings, POST requests, streaming large
|
|
|
10 |
uploads, streaming large downloads, using HTTP cookies, uploading JSON data,
|
|
|
11 |
etc...
|
|
|
12 |
- Can send both synchronous and asynchronous requests using the same interface.
|
|
|
13 |
- Uses PSR-7 interfaces for requests, responses, and streams. This allows you
|
|
|
14 |
to utilize other PSR-7 compatible libraries with Guzzle.
|
|
|
15 |
- Abstracts away the underlying HTTP transport, allowing you to write
|
|
|
16 |
environment and transport agnostic code; i.e., no hard dependency on cURL,
|
|
|
17 |
PHP streams, sockets, or non-blocking event loops.
|
|
|
18 |
- Middleware system allows you to augment and compose client behavior.
|
|
|
19 |
|
|
|
20 |
```php
|
|
|
21 |
$client = new \GuzzleHttp\Client();
|
|
|
22 |
$res = $client->request('GET', 'https://api.github.com/user', [
|
|
|
23 |
'auth' => ['user', 'pass']
|
|
|
24 |
]);
|
|
|
25 |
echo $res->getStatusCode();
|
|
|
26 |
// 200
|
|
|
27 |
echo $res->getHeaderLine('content-type');
|
|
|
28 |
// 'application/json; charset=utf8'
|
|
|
29 |
echo $res->getBody();
|
|
|
30 |
// {"type":"User"...'
|
|
|
31 |
|
|
|
32 |
// Send an asynchronous request.
|
|
|
33 |
$request = new \GuzzleHttp\Psr7\Request('GET', 'http://httpbin.org');
|
|
|
34 |
$promise = $client->sendAsync($request)->then(function ($response) {
|
|
|
35 |
echo 'I completed! ' . $response->getBody();
|
|
|
36 |
});
|
|
|
37 |
$promise->wait();
|
|
|
38 |
```
|
|
|
39 |
|
|
|
40 |
## Help and docs
|
|
|
41 |
|
|
|
42 |
- [Documentation](http://guzzlephp.org/)
|
|
|
43 |
- [stackoverflow](http://stackoverflow.com/questions/tagged/guzzle)
|
|
|
44 |
- [Gitter](https://gitter.im/guzzle/guzzle)
|
|
|
45 |
|
|
|
46 |
|
|
|
47 |
## Installing Guzzle
|
|
|
48 |
|
|
|
49 |
The recommended way to install Guzzle is through
|
|
|
50 |
[Composer](http://getcomposer.org).
|
|
|
51 |
|
|
|
52 |
```bash
|
|
|
53 |
# Install Composer
|
|
|
54 |
curl -sS https://getcomposer.org/installer | php
|
|
|
55 |
```
|
|
|
56 |
|
|
|
57 |
Next, run the Composer command to install the latest stable version of Guzzle:
|
|
|
58 |
|
|
|
59 |
```bash
|
|
|
60 |
php composer.phar require guzzlehttp/guzzle
|
|
|
61 |
```
|
|
|
62 |
|
|
|
63 |
After installing, you need to require Composer's autoloader:
|
|
|
64 |
|
|
|
65 |
```php
|
|
|
66 |
require 'vendor/autoload.php';
|
|
|
67 |
```
|
|
|
68 |
|
|
|
69 |
You can then later update Guzzle using composer:
|
|
|
70 |
|
|
|
71 |
```bash
|
|
|
72 |
composer.phar update
|
|
|
73 |
```
|
|
|
74 |
|
|
|
75 |
|
|
|
76 |
## Version Guidance
|
|
|
77 |
|
|
|
78 |
| Version | Status | Packagist | Namespace | Repo | Docs | PSR-7 |
|
|
|
79 |
|---------|-------------|---------------------|--------------|---------------------|---------------------|-------|
|
|
|
80 |
| 3.x | EOL | `guzzle/guzzle` | `Guzzle` | [v3][guzzle-3-repo] | [v3][guzzle-3-docs] | No |
|
|
|
81 |
| 4.x | EOL | `guzzlehttp/guzzle` | `GuzzleHttp` | N/A | N/A | No |
|
|
|
82 |
| 5.x | Maintained | `guzzlehttp/guzzle` | `GuzzleHttp` | [v5][guzzle-5-repo] | [v5][guzzle-5-docs] | No |
|
|
|
83 |
| 6.x | Latest | `guzzlehttp/guzzle` | `GuzzleHttp` | [v6][guzzle-6-repo] | [v6][guzzle-6-docs] | Yes |
|
|
|
84 |
|
|
|
85 |
[guzzle-3-repo]: https://github.com/guzzle/guzzle3
|
|
|
86 |
[guzzle-5-repo]: https://github.com/guzzle/guzzle/tree/5.3
|
|
|
87 |
[guzzle-6-repo]: https://github.com/guzzle/guzzle
|
|
|
88 |
[guzzle-3-docs]: http://guzzle3.readthedocs.org/en/latest/
|
|
|
89 |
[guzzle-5-docs]: http://guzzle.readthedocs.org/en/5.3/
|
|
|
90 |
[guzzle-6-docs]: http://guzzle.readthedocs.org/en/latest/
|