Guzzle
Guzzle is a PHP HTTP client that makes it easy to send HTTP requests and trivial to integrate with web services.
- Manages things like persistent connections, represents query strings as collections, simplifies sending streaming POST requests with fields and files, and abstracts away the underlying HTTP transport layer.
- Can send both synchronous and asynchronous requests using the same interface without requiring a dependency on a specific event loop.
- Pluggable HTTP handlers allows Guzzle to integrate with any method you choose for sending HTTP requests over the wire (e.g., cURL, sockets, PHP’s stream wrapper, non-blocking event loops like React, etc.).
- Guzzle makes it so that you no longer need to fool around with cURL options, stream contexts, or sockets.
1. $client = new GuzzleHttp\Client();
2. $response = $client->get('http://guzzlephp.org');
3. $res = $client->get('https://api.github.com/user', ['auth' => ['user', 'pass']]);
4. echo $res->getStatusCode();
5. // "200"
6. echo $res->getHeader('content-type');
7. // 'application/json; charset=utf8'
8. echo $res->getBody();
9. // {"type":"User"...'
10. var_export($res->json());
11. // Outputs the JSON decoded data
13. // Send an asynchronous request.
14. $req = $client->createRequest('GET', 'http://httpbin.org', ['future' => true]);
15. $client->send($req)->then(function ($response) {
16. echo 'I completed! ' . $response;
17. });
User guide
- Overview
- Requirements
- Installation
- License
- Contributing
- Reporting a security vulnerability
- Quickstart
- Make a Request
- Using Responses
- Query String Parameters
- Uploading Data
- Cookies
- Redirects
- Exceptions
- Clients
- Creating a client
- Sending Requests
- Sending Requests With a Pool
- Request Options
- Event Subscribers
- Environment Variables
- Request and Response Messages
- Headers
- Body
- Requests
- Responses
- Event System
- Event Emitters
- Event Priorities
- Working With Request Events
- Streams
- Creating Streams
- Metadata
- Stream Decorators
- RingPHP Handlers
- Using a handler
- Creating a handler
- Testing Guzzle Clients
- Mock Subscriber
- History Subscriber
- Mock Adapter
- Test Web Server
- FAQ
- Why should I use Guzzle?
- Does Guzzle require cURL?
- Can Guzzle send asynchronous requests?
- How can I add custom cURL options?
- How can I add custom stream context options?
- Why am I getting an SSL verification error?
- What is this Maximum function nesting error?
- Why am I getting a 417 error response?
HTTP Components
There are a number of optional libraries you can use along with Guzzle’s HTTP layer to add capabilities to the client.
Logs HTTP requests and responses sent over the wire using customizable log message templates.
Signs requests using OAuth 1.0.
Implements a private transparent proxy cache that caches HTTP responses.
Retries failed requests using customizable retry strategies (e.g., retry based on response status code, cURL error codes, etc.)
Verifies the message integrity of HTTP responses using customizable validators. This plugin can be used, for example, to verify the Content-MD5 headers of responses.
Service Description Commands
You can use the Guzzle Command library to encapsulate interaction with a web service using command objects. Building on top of Guzzle’s command abstraction allows you to easily implement things like service description that can be used to serialize requests and parse responses using a meta-description of a web service.
Provides the foundational elements used to build high-level, command based, web service clients with Guzzle.
Provides an implementation of the Guzzle Command library that uses Guzzle service descriptions to describe web services, serialize requests, and parse responses into easy to use model structures.
