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