Http/Client.php
Zend Framework
LICENSE
This source file is subject to the new BSD license that is bundled
with this package in the file LICENSE.txt.
It is also available through the world-wide-web at this URL:
http://framework.zend.com/license/new-bsd
If you did not receive a copy of the license and are unable to
obtain it through the world-wide-web, please send an email
to license@zend.com so we can send you a copy immediately.
- Category
- Zend
- Copyright
- Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
- License
- New BSD License
- Package
- Zend_Http
- Subpackage
- Client
- Version
- $Id$
Package: Zend_Http\ClientZend_Http_Client is an implementation of an HTTP client in PHP. The client
supports basic features like sending different HTTP requests and handling
redirections, as well as more advanced features like proxy settings, HTTP
authentication and cookie persistence (using a Zend_Http_CookieJar object)
- Children
- \Zend_Oauth_Client
- \Zend_Gdata_HttpClient
- Category
- Zend
- Copyright
- Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
- License
- New BSD License
| \Zend_Http_Client_Exception | |
- Todo
- Implement proxy settings
Constants
Properties



resource $_fileInfoDb = nullstaticFileinfo magic database resource
This variable is populated the first time _detectFileMimeType is called
and is then reused on every call to this method
Default valuenullDetails- Type
- resource



boolean $_queryBracketsEscaped = trueStatus if the http_build_query function escapes brackets
Default valuetrueDetails- Type
- boolean



boolean $_unmaskStatus = falseStatus for unmasking GET array params
Default valuefalseDetails- Type
- boolean



array|null $authHTTP Authentication settings
Expected to be an associative array with this structure:
$this->auth = array('user' => 'username', 'password' => 'password', 'type' => 'basic')
Where 'type' should be one of the supported authentication types (see the AUTH_*
constants), for example 'basic' or 'digest'.
If null, no authentication will be used.
Details- Type
- array | null



array $body_field_order = array()Ordered list of keys from key/value pair data to include in body
An associative array, where each element is of the format:
'' => VTYPE_SCALAR | VTYPE_FILE
Default valuearray()Details- Type
- array



array $config = array('maxredirects' => 5, 'strictredirects' => false, 'useragent' => 'Zend_Http_Client', 'timeout' => 10, 'adapter' => 'Zend_Http_Client_Adapter_Socket', 'httpversion' => self::HTTP_1, 'keepalive' => false, 'storeresponse' => true, 'strict' => true, 'output_stream' => false, 'encodecookies' => true, 'rfc3986_strict' => false)Configuration array, set using the constructor or using ::setConfig()
Default valuearray('maxredirects' => 5, 'strictredirects' => false, 'useragent' => 'Zend_Http_Client', 'timeout' => 10, 'adapter' => 'Zend_Http_Client_Adapter_Socket', 'httpversion' => self::HTTP_1, 'keepalive' => false, 'storeresponse' => true, 'strict' => true, 'output_stream' => false, 'encodecookies' => true, 'rfc3986_strict' => false)Details- Type
- array



string $enctype = nullRequest body content type (for POST requests)
Default valuenullDetails- Type
- string



array $files = array()File upload arrays (used in POST requests)
An associative array, where each element is of the format:
'name' => array('filename.txt', 'text/plain', 'This is the actual file contents')
Default valuearray()Details- Type
- array



array $headers = array()Associative array of request headers
Default valuearray()Details- Type
- array



string $last_request = nullThe last HTTP request sent by the client, as string
Default valuenullDetails- Type
- string



array $paramsGet = array()Associative array of GET parameters
Default valuearray()Details- Type
- array



array $paramsPost = array()Associative array of POST parameters
Default valuearray()Details- Type
- array



string $raw_post_data = nullThe raw post data to send. Could be set by setRawData($data, $enctype).
Default valuenullDetails- Type
- string
Methods



__construct(\Zend_Uri_Http | string $uri = null, array $config = null) : voidConstructor method. Will create a new HTTP client. Accepts the target
URL and optionally configuration array.
Parameters| Name | Type | Description |
|---|
| $uri | \Zend_Uri_Http | string | |
|---|
| $config | array | Configuration key-value pairs. |
|---|



_detectFileMimeType(string $file) : stringAttempt to detect the MIME type of a file using available extensions
This method will try to detect the MIME type of a file. If the fileinfo
extension is available, it will be used. If not, the mime_magic
extension which is deprected but is still available in many PHP setups
will be tried.
If neither extension is available, the default application/octet-stream
MIME type will be returned
Parameters| Name | Type | Description |
|---|
| $file | string | File path |
|---|
Returns| Type | Description |
|---|
| string | MIME type |



_flattenParametersArray(array $parray, string $prefix = null) : arraystaticConvert an array of parameters into a flat array of (key, value) pairs
Will flatten a potentially multi-dimentional array of parameters (such
as POST parameters) into a flat array of (key, value) paris. In case
of multi-dimentional arrays, square brackets ([]) will be added to the
key to indicate an array.
Parameters| Name | Type | Description |
|---|
| $parray | array | |
|---|
| $prefix | string | |
|---|
ReturnsDetails- Since
- 1.9



_getParametersRecursive(array $parray, bool $urlencode = false) : arrayHelper method that gets a possibly multi-level parameters array (get or
post) and flattens it.
The method returns an array of (key, value) pairs (because keys are not
necessarily unique. If one of the parameters in as array, it will also
add a [] suffix to the key.
This method is deprecated since Zend Framework 1.9 in favour of
self::_flattenParametersArray() and will be dropped in 2.0
Parameters| Name | Type | Description |
|---|
| $parray | array | The parameters array |
|---|
| $urlencode | bool | Whether to urlencode the name and value |
|---|
ReturnsDetails- Deprecated
- since 1.9



_setParameter(string $type, string $name, string $value) : nullSet a GET or POST parameter - used by SetParameterGet and SetParameterPost
Parameters| Name | Type | Description |
|---|
| $type | string | GET or POST |
|---|
| $name | string | |
|---|
| $value | string | |
|---|
Returns 


encodeAuthHeader(string $user, string $password, string $type = self::AUTH_BASIC) : stringstaticCreate a HTTP authentication "Authorization:" header according to the
specified user, password and authentication method.
Parameters| Name | Type | Description |
|---|
| $user | string | |
|---|
| $password | string | |
|---|
| $type | string | |
|---|
ReturnsThrowsDetails- See
-



encodeFormData(string $boundary, string $name, mixed $value, string $filename = null, array $headers = array()) : stringstaticEncode data to a multipart/form-data part suitable for a POST request.
Parameters| Name | Type | Description |
|---|
| $boundary | string | |
|---|
| $name | string | |
|---|
| $value | mixed | |
|---|
| $filename | string | |
|---|
| $headers | array | Associative array of optional headers @example ("Content-Transfer-Encoding" => "binary") |
|---|
Returns 


getHeader(string $key) : string | array | nullGet the value of a specific header
Note that if the header has more than one value, an array
will be returned.
Parameters| Name | Type | Description |
|---|
| $key | string | |
|---|
Returns| Type | Description |
|---|
| string | array | null | The header value or null if it is not set |



getLastResponse() : \Zend_Http_ResponseGet the last HTTP response received by this client
If $config['storeresponse'] is set to false, or no response was
stored yet, will return null
Returns


getStream() : boolean | stringGet status of streaming for received data
Returns| Type | Description |
|---|
| boolean | string | |



getUri(boolean $as_string = false) : \Zend_Uri_Http | stringGet the URI for the next request
Parameters| Name | Type | Description |
|---|
| $as_string | boolean | If true, will return the URI as a string |
|---|
Returns 


request(string $method = null) : \Zend_Http_ResponseSend the HTTP request and return an HTTP response object
Parameters| Name | Type | Description |
|---|
| $method | string | |
|---|
ReturnsThrows 


resetParameters(bool $clearAll = false) : \Zend_Http_ClientClear all GET and POST parameters
Should be used to reset the request parameters if the client is
used for several concurrent requests.
clearAll parameter controls if we clean just parameters or also
headers and last_*
Parameters| Name | Type | Description |
|---|
| $clearAll | bool | Should all data be cleared? |
|---|
Returns


setAdapter(\Zend_Http_Client_Adapter_Interface | string $adapter) : nullLoad the connection adapter
While this method is not called more than one for a client, it is
seperated from ->request() to preserve logic and readability
ParametersReturnsThrows


setAuth(string | false $user, string $password = '', string $type = self::AUTH_BASIC) : \Zend_Http_ClientSet HTTP authentication parameters
$type should be one of the supported types - see the self::AUTH_*
constants.
To enable authentication:
$this->setAuth('shahar', 'secret', Zend_Http_Client::AUTH_BASIC);
To disable authentication:
$this->setAuth(false);
Parameters| Name | Type | Description |
|---|
| $user | string | false | User name or false disable authentication |
|---|
| $password | string | Password |
|---|
| $type | string | Authentication type |
|---|
ReturnsThrowsDetails- See
-



setConfig( $config = array()) : \Zend_Http_ClientSet configuration parameters for this HTTP client
Parameters| Name | Type | Description |
|---|
| $config | | |
|---|
ReturnsThrows 


setCookie(\Zend_Http_Cookie | string $cookie, string | null $value = null) : \Zend_Http_ClientAdd a cookie to the request. If the client has no Cookie Jar, the cookies
will be added directly to the headers array as "Cookie" headers.
Parameters| Name | Type | Description |
|---|
| $cookie | \Zend_Http_Cookie | string | |
|---|
| $value | string | null | If "cookie" is a string, this is the cookie value. |
|---|
ReturnsThrows 


setCookieJar(\Zend_Http_CookieJar | boolean $cookiejar = true) : \Zend_Http_ClientSet the HTTP client's cookie jar.
A cookie jar is an object that holds and maintains cookies across HTTP requests
and responses.
Parameters| Name | Type | Description |
|---|
| $cookiejar | \Zend_Http_CookieJar | boolean | Existing cookiejar object, true to create a new one, false to disable |
|---|
ReturnsThrows


setEncType(string $enctype = self::ENC_URLENCODED) : \Zend_Http_ClientSet the encoding type for POST data
Parameters| Name | Type | Description |
|---|
| $enctype | string | |
|---|
Returns 


setFileUpload(string $filename, string $formname, string $data = null, string $ctype = null) : \Zend_Http_ClientSet a file to upload (using a POST request)
Can be used in two ways:
1. $data is null (default): $filename is treated as the name if a local file which
will be read and sent. Will try to guess the content type using mime_content_type().
2. $data is set - $filename is sent as the file name, but $data is sent as the file
contents and no file is read from the file system. In this case, you need to
manually set the Content-Type ($ctype) or it will default to
application/octet-stream.
Parameters| Name | Type | Description |
|---|
| $filename | string | Name of file to upload, or name to save as |
|---|
| $formname | string | Name of form element to send as |
|---|
| $data | string | Data to send (if null, $filename is read and sent) |
|---|
| $ctype | string | Content type to use (if $data is set and $ctype is
null, will be application/octet-stream)
|
|---|
ReturnsThrows


setHeaders(string | array $name, mixed $value = null) : \Zend_Http_ClientSet one or more request headers
This function can be used in several ways to set the client's request
headers:
1. By providing two parameters: $name as the header to set (e.g. 'Host')
and $value as it's value (e.g. 'www.example.com').
2. By providing a single header string as the only parameter
e.g. 'Host: www.example.com'
3. By providing an array of headers as the first parameter
e.g. array('host' => 'www.example.com', 'x-foo: bar'). In This case
the function will call itself recursively for each array item.
Parameters| Name | Type | Description |
|---|
| $name | string | array | Header name, full header string ('Header: value')
or an array of headers
|
|---|
| $value | mixed | Header value or null |
|---|
ReturnsThrows


setMethod(string $method = self::GET) : \Zend_Http_ClientSet the next request's method
Validated the passed method and sets it. If we have files set for
POST requests, and the new method is not POST, the files are silently
dropped.
Parameters| Name | Type | Description |
|---|
| $method | string | |
|---|
ReturnsThrows


setParameterGet(string | array $name, string $value = null) : \Zend_Http_ClientSet a GET parameter for the request. Wrapper around _setParameter
Parameters| Name | Type | Description |
|---|
| $name | string | array | |
|---|
| $value | string | |
|---|
Returns 


setParameterPost(string | array $name, string $value = null) : \Zend_Http_ClientSet a POST parameter for the request. Wrapper around _setParameter
Parameters| Name | Type | Description |
|---|
| $name | string | array | |
|---|
| $value | string | |
|---|
Returns 


setRawData(string | resource $data, string $enctype = null) : \Zend_Http_ClientSet the raw (already encoded) POST data.
This function is here for two reasons:
1. For advanced user who would like to set their own data, already encoded
2. For backwards compatibilty: If someone uses the old post($data) method.
this method will be used to set the encoded data.
$data can also be stream (such as file) from which the data will be read.
Parameters| Name | Type | Description |
|---|
| $data | string | resource | |
|---|
| $enctype | string | |
|---|
Returns


setStream(string | boolean $streamfile = true) : \Zend_Http_ClientSet streaming for received data
Parameters| Name | Type | Description |
|---|
| $streamfile | string | boolean | Stream file, true for temp file, false/null for no streaming |
|---|
Returns 


setUnmaskStatus(boolean $status = true) : \Zend_Http_ClientSet the unmask feature for GET parameters as array
Example:
foo%5B0%5D=a&foo%5B1%5D=b
becomes
foo=a&foo=b
This is usefull for some services
Parameters| Name | Type | Description |
|---|
| $status | boolean | |
|---|
Returns