Http/Client.php
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-2012 Zend Technologies USA Inc. (http://www.zend.com) + +
- License
- New BSD License + +
- Package
- Zend_Http + +
- Subpackage
- Client + +
- Version
- $Id: Client.php 24593 2012-01-05 20:35:02Z matthew $ + +
\Zend_Http_Client
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_Gdata_HttpClient
- Category
- Zend + +
- Copyright
- Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) + +
- License
- New BSD License + +
- Todo
- Implement proxy settings + +
Constants
Properties

resource $_fileInfoDb = nullThis variable is populated the first time _detectFileMimeType is called +and is then reused on every call to this method
nullDetails- Type
- resource

boolean $_queryBracketsEscaped = truetrueDetails- Type
- boolean

boolean $_unmaskStatus = falsefalseDetails- Type
- boolean

\Zend_Http_Client_Adapter_Interface $adapter = nullnullDetails
array|null $authExpected 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.
- Type
- array | null

array $body_field_order = array()An associative array, where each element is of the format:
+ '
array()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)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)Details- Type
- array

\Zend_Http_CookieJar $cookiejar = nullnullDetails- Type
- \Zend_Http_CookieJar

string $enctype = nullnullDetails- Type
- string

array $files = array()An associative array, where each element is of the format: + 'name' => array('filename.txt', 'text/plain', 'This is the actual file contents')
array()Details- Type
- array

string $last_request = nullnullDetails- Type
- string

\Zend_Http_Response $last_response = nullnullDetails
string $raw_post_data = nullCould be set by setRawData($data, $enctype).
nullDetails- 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.
| 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
| Name | Type | Description |
|---|---|---|
| $file | string | File path |
| Type | Description |
|---|---|
| string | MIME type |

_flattenParametersArray(array $parray, string $prefix = null) : arrayConvert 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.
| Name | Type | Description |
|---|---|---|
| $parray | array | |
| $prefix | string |
| Type | Description |
|---|---|
| array |
- 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
| Name | Type | Description |
|---|---|---|
| $parray | array | The parameters array |
| $urlencode | bool | Whether to urlencode the name and value |
| Type | Description |
|---|---|
| array |
- Deprecated
- since 1.9 + +

_prepareBody() : stringPrepare the request body (for POST and PUT requests)
| Type | Description |
|---|---|
| string |
| Exception | Description |
|---|---|
| \Zend_Http_Client_Exception |

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

encodeAuthHeader(string $user, string $password, string $type = self::AUTH_BASIC) : stringCreate a HTTP authentication "Authorization:" header according to the +specified user, password and authentication method.
| Name | Type | Description |
|---|---|---|
| $user | string | |
| $password | string | |
| $type | string |
| Type | Description |
|---|---|
| string |
| Exception | Description |
|---|---|
| \Zend_Http_Client_Exception |
- See
- \http://www.faqs.org/rfcs/rfc2617.html + +

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

getAdapter() : \Zend_Http_Client_Adapter_InterfaceLoad the connection adapter
| Type | Description |
|---|---|
| \Zend_Http_Client_Adapter_Interface | $adapter |

getCookieJar() : \Zend_Http_CookieJar | nullReturn the current cookie jar or null if none.
| Type | Description |
|---|---|
| \Zend_Http_CookieJar | null |

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.
| Name | Type | Description |
|---|---|---|
| $key | string |
| 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
| Type | Description |
|---|---|
| \Zend_Http_Response | or null if none |

getRedirectionsCount() : intGet the number of redirections done on the last request
| Type | Description |
|---|---|
| int |

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

getUnmaskStatus() : booleanReturns the currently configured unmask status
| Type | Description |
|---|---|
| boolean |

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

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

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_*
| Name | Type | Description |
|---|---|---|
| $clearAll | bool | Should all data be cleared? + |
| Type | Description |
|---|---|
| \Zend_Http_Client |

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
| Name | Type | Description |
|---|---|---|
| $adapter | \Zend_Http_Client_Adapter_Interface | string |
| Type | Description |
|---|---|
| null |
| Exception | Description |
|---|---|
| \Zend_Http_Client_Exception |

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);
+| Name | Type | Description |
|---|---|---|
| $user | string | false | User name or false disable authentication |
| $password | string | Password |
| $type | string | Authentication type |
| Type | Description |
|---|---|
| \Zend_Http_Client |
| Exception | Description |
|---|---|
| \Zend_Http_Client_Exception |
- See
- \http://www.faqs.org/rfcs/rfc2617.html + +

setConfig(\Zend_Config $config = array()) : \Zend_Http_ClientSet configuration parameters for this HTTP client
| Name | Type | Description |
|---|---|---|
| $config | \Zend_Config | | array $config + |
| Type | Description |
|---|---|
| \Zend_Http_Client |
| Exception | Description |
|---|---|
| \Zend_Http_Client_Exception |

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.
| Name | Type | Description |
|---|---|---|
| $cookie | \Zend_Http_Cookie | string | |
| $value | string | null | If "cookie" is a string, this is the cookie value. + |
| Type | Description |
|---|---|
| \Zend_Http_Client |
| Exception | Description |
|---|---|
| \Zend_Http_Client_Exception |

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.
| Name | Type | Description |
|---|---|---|
| $cookiejar | \Zend_Http_CookieJar | boolean | Existing cookiejar object, true to create a new one, false to disable |
| Type | Description |
|---|---|
| \Zend_Http_Client |
| Exception | Description |
|---|---|
| \Zend_Http_Client_Exception |

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

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:
+ +-
+
- $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(). +
- $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. +
| 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) + |
| Type | Description |
|---|---|
| \Zend_Http_Client |
| Exception | Description |
|---|---|
| \Zend_Http_Client_Exception |

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.
| Name | Type | Description |
|---|---|---|
| $name | string | array | Header name, full header string ('Header: value') + or an array of headers + |
| $value | mixed | Header value or null |
| Type | Description |
|---|---|
| \Zend_Http_Client |
| Exception | Description |
|---|---|
| \Zend_Http_Client_Exception |

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.
| Name | Type | Description |
|---|---|---|
| $method | string |
| Type | Description |
|---|---|
| \Zend_Http_Client |
| Exception | Description |
|---|---|
| \Zend_Http_Client_Exception |

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

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

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.
| Name | Type | Description |
|---|---|---|
| $data | string | resource | |
| $enctype | string |
| Type | Description |
|---|---|
| \Zend_Http_Client |

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

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
| Name | Type | Description |
|---|---|---|
| $status | boolean |
| Type | Description |
|---|---|
| \Zend_Http_Client |

setUri(\Zend_Uri_Http | string $uri) : \Zend_Http_ClientSet the URI for the next request
| Name | Type | Description |
|---|---|---|
| $uri | \Zend_Uri_Http | string |
| Type | Description |
|---|---|
| \Zend_Http_Client |
| Exception | Description |
|---|---|
| \Zend_Http_Client_Exception |