Zend_Http_Client provides an easy interface for preforming Hyper-Text Transfer Protocol (HTTP) requests. Zend_Http_Client supports most simple features expected from an HTTP client, as well as some more complex features such as HTTP authentication and file uploads. Successful requests (and most unsuccessful ones too) return a Zend_Http_Response object, which provides access to the response's headers and body (see Zend_Http_Response).
The class constructor optionally accepts a URL as it's first parameter (can be either a string or a Zend_Uri_Http object), and an optional array of configuration parameters. Both can be left out, and set later using the setUri() and setConfig() methods.
Example #1 Instantiating a Zend_Http_Client object
0, 'timeout' => 30)); // This is actually exactly the same: $client = new Zend_Http_Client(); $client->setUri('http://example.org'); $client->setConfig(array( 'maxredirects' => 0, 'timeout' => 30));
The constructor and setConfig() method accept an associative array of configuration parameters. Setting these parameters is optional, as they all have default values.
|Parameter||Description||Expected Values||Default Value|
|maxredirects||Maximum number of redirections to follow (0 = none)||integer||5|
|strict||Whether perform validation on header names. When set to false, validation functions will be skipped. Usually this should not be changed||boolean||true|
|strictredirects||Whether to strictly follow the RFC when redirecting (see HTTP Redirections)||boolean||false|
|useragent||User agent identifier string (sent in request headers)||string||'Zend_Http_Client'|
|timeout||Connection timeout (seconds)||integer||10|
|httpversion||HTTP protocol version (usually '1.1' or '1.0')||string||'1.1'|
|adapter||Connection adapter class to use (see Zend_Http_Client - Connection Adapters)||mixed||'Zend_Http_Client_Adapter_Socket'|
|keepalive||Whether to enable keep-alive connections with the server. Useful and might improve performance if several consecutive requests to the same server are performned.||boolean||false|
|storeresponse||Whether to store last response for later retrieval with getLastResponse(). If set to false getLastResponse() will return null.||boolean||true|
Performing simple HTTP requests is very easily done using the request() method, and rarely needs more than three lines of code:
Example #2 Performing a Simple GET Request
If no method is specified, the method set by the last setMethod() call is used. If setMethod() was never called, the default request method is GET (see the above example).
Example #3 Using Request Methods Other Than GET
request('POST'); // Yet another way of preforming a POST request $client->setMethod(Zend_Http_Client::POST); $response = $client->request();
Adding GET parameters to an HTTP request is quite simple, and can be done either by specifying them as part of the URL, or by using the setParameterGet() method. This method takes the GET parameter's name as it's first parameter, and the GET parameter's value as it's second parameter. For convenience, the setParameterGet() method can also accept a single associative array of name => value GET variables - which may be more comfortable when several GET parameters need to be set.
Example #4 Setting GET Parameters
setParameterGet('knight', 'lancelot'); // This is equivalent to setting such URL: $client->setUri('http://example.com/index.php?knight=lancelot'); // Adding several parameters with one call $client->setParameterGet(array( 'first_name' => 'Bender', 'middle_name' => 'Bending' 'made_in' => 'Mexico', ));
While GET parameters can be sent with every request method, POST parameters are only sent in the body of POST requests. Adding POST parameters to a request is very similar to adding GET parameters, and can be done with the setParameterPost() method, which is similar to the setParameterGet() method in structure.
Example #5 Setting POST Parameters
setParameterPost('language', 'fr'); // Setting several POST parameters, one of them with several values $client->setParameterPost(array( 'language' => 'es', 'country' => 'ar', 'selection' => array(45, 32, 80) ));
Zend_Http_Client provides methods of accessing the last request
sent and last response received by the client object.
Zend_Http_Client->getLastRequest() takes no parameters
and returns the last HTTP request sent by the client as a string.
the last HTTP response received by the client as a