Introduction
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
).
Using Zend_Http_Client
The class constructor optionally accepts a URL as its 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.
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));
]]>Zend_Http_Client uses Zend_Uri_Http to validate URLs. This means
that some special characters like the pipe symbol ('|') or the
caret symbol ('^') will not be accepted in the URL by default.
This can be modified by setting the 'allow_unwise' option of
Zend_Uri to 'true'. See
for more information.Configuration Parameters
The constructor and setConfig() method accept an associative array
of configuration parameters. Setting these parameters is optional,
as they all have default values.
Zend_Http_Client configuration parametersParameterDescriptionExpected ValuesDefault ValuemaxredirectsMaximum number of redirections to follow (0 = none)integer5strictWhether perform validation on header names. When set to false, validation functions will be skipped.
Usually this should not be changedbooleantruestrictredirectsWhether to strictly follow the RFC when redirecting (see )booleanfalseuseragentUser agent identifier string (sent in request headers)string'Zend_Http_Client'timeoutConnection timeout (seconds)integer10httpversionHTTP protocol version (usually '1.1' or '1.0')string'1.1'adapterConnection adapter class to use (see )mixed'Zend_Http_Client_Adapter_Socket'keepaliveWhether to enable keep-alive connections with the server. Useful and might improve performance if several
consecutive requests to the same server are performed.booleanfalsestoreresponseWhether to store last response for later retrieval with getLastResponse(). If set to false
getLastResponse() will return null.booleantrue
Performing Basic HTTP Requests
Performing simple HTTP requests is very easily done using the
request() method, and rarely needs more than three lines of code:
Performing a Simple GET Requestrequest();
]]>
The request() method takes one optional parameter - the request method.
This can be either GET, POST, PUT, HEAD, DELETE, TRACE, OPTIONS or
CONNECT as defined by the HTTP protocol
See RFC 2616 - .
.
For convenience, these are all defined as class constants:
Zend_Http_Client::GET, Zend_Http_Client::POST and so on.
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).
Using Request Methods Other Than GETrequest('POST');
// Yet another way of preforming a POST request
$client->setMethod(Zend_Http_Client::POST);
$response = $client->request();
]]>Adding GET and POST parameters
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 its first parameter,
and the GET parameter's value as its 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.
Setting GET ParameterssetParameterGet('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.
Setting POST ParameterssetParameterPost('language', 'fr');
// Setting several POST parameters, one of them with several values
$client->setParameterPost(array(
'language' => 'es',
'country' => 'ar',
'selection' => array(45, 32, 80)
));
]]>
Note that when sending POST requests, you can set both GET and
POST parameters. On the other hand, while setting POST parameters
for a non-POST request will not trigger and error, it is useless.
Unless the request is a POST request, POST parameters are simply
ignored.
Accessing Last Request and Response
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.
Similarly, Zend_Http_Client->getLastResponse() returns
the last HTTP response received by the client as a
Zend_Http_Response object.