## API Documentation

# 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-2011 Zend Technologies USA Inc. (http://www.zend.com)
license
  New BSD License
package
  Zend_Http
subpackage
  Client
version
  $Id: Client.php 24461 2011-09-11 19:25:08Z padraic $

## \Zend_Http_Client
jump to top

Zend_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)

category
  Zend
copyright
  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
license
  New BSD License
package
  Zend_Http
subpackage
  Client
\Zend_Http_Client_Exception
todo
  Implement proxy settings

### Constants

`GET = 'GET'`

HTTP request methods

`POST = 'POST'`

`PUT = 'PUT'`

`HEAD = 'HEAD'`

`DELETE = 'DELETE'`

`TRACE = 'TRACE'`

`OPTIONS = 'OPTIONS'`

`CONNECT = 'CONNECT'`

`MERGE = 'MERGE'`

`AUTH_BASIC = 'basic'`

Supported HTTP Authentication methods

`HTTP_1 = '1.1'`

HTTP protocol versions

`HTTP_0 = '1.0'`

`CONTENT_TYPE = 'Content-Type'`

Content attributes

`CONTENT_LENGTH = 'Content-Length'`

`ENC_URLENCODED = 'application/x-www-form-urlencoded'`

POST data encoding methods

`ENC_FORMDATA = 'multipart/form-data'`

`VTYPE_SCALAR = 'SCALAR'`

Value types for Body key/value pairs

`VTYPE_FILE = 'FILE'`

### Properties

`resource $_fileInfoDb= 'null'`
static

Fileinfo magic database resource

This variable is populated the first time _detectFileMimeType is called and is then reused on every call to this method

Default value `null` Details

Type
  resource

`boolean $_queryBracketsEscaped= 'true'`

Status if the http_build_query function escapes brackets

Default value `true` Details

Type
  boolean

`boolean $_unmaskStatus= 'false'`

Status for unmasking GET array params

Default value `false` Details

Type
  boolean

`\Zend_Http_Client_Adapter_Interface $adapter= 'null'`

The adapter used to perform the actual connection to the server

Default value `null` Details

Type
  \Zend_Http_Client_Adapter_Interface

`array|null $auth= ''`

HTTP 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
  arraynull

`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 value `array` Details

Type
  array

`array $config= 'array'`

Configuration array, set using the constructor or using ::setConfig()

Default value `array` Details

Type
  array

`\Zend_Http_CookieJar $cookiejar= 'null'`

The client's cookie jar

Default value `null` Details

Type
  \Zend_Http_CookieJar

`string $enctype= 'null'`

Request body content type (for POST requests)

Default value `null` Details

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 value `array` Details

Type
  array

`array $headers= 'array'`

Associative array of request headers

Default value `array` Details

Type
  array

`string $last_request= 'null'`

The last HTTP request sent by the client, as string

Default value `null` Details

Type
  string

`\Zend_Http_Response $last_response= 'null'`

The last HTTP response received by the client

Default value `null` Details

Type
  \Zend_Http_Response

`string $method= 'self'`

HTTP request method

Default value `self` Details

Type
  string

`array $paramsGet= 'array'`

Associative array of GET parameters

Default value `array` Details

Type
  array

`array $paramsPost= 'array'`

Associative array of POST parameters

Default value `array` Details

Type
  array

`string $raw_post_data= 'null'`

The raw post data to send. Could be set by setRawData($data, $enctype).

Default value `null` Details

Type
  string

`int $redirectCounter= '0'`

Redirection counter

Default value `0` Details

Type
  int

`\Zend_Uri_Http $uri= 'null'`

Request URI

Default value `null` Details

Type
  \Zend_Uri_Http

### Methods

`__construct( \Zend_Uri_Http|string $uri = null, array $config = null ) : void`

Constructor 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 ) : string`

Attempt 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 ) : array`
static

Convert 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 |

Returns

Type | Description
--- | ---
array |

Details

since
  1.9

`_getParametersRecursive( array $parray, bool $urlencode = false ) : array`

Helper 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

Returns

Type | Description
--- | ---
array |

Details

deprecated
  since 1.9

`_openTempStream( ) : resource`

Create temporary stream

Returns

Type | Description
--- | ---
resource |

`_prepareBody( ) : string`

Prepare the request body (for POST and PUT requests)

Returns

Type | Description
--- | ---
string |

Throws

Exception | Description
--- | ---
\Zend_Http_Client_Exception |

`_prepareHeaders( ) : array`

Prepare the request headers

Returns

Type | Description
--- | ---
array |

`_setParameter( string $type, string $name, string $value ) : null`

Set a GET or POST parameter - used by SetParameterGet and SetParameterPost

Parameters

Name | Type | Description
--- | --- | ---
$type | string | GET or POST
$name | string |
$value | string |

Returns

Type | Description
--- | ---
null |

`encodeAuthHeader( string $user, string $password, string $type = self ) : string`
static

Create a HTTP authentication "Authorization:" header according to the specified user, password and authentication method.

Parameters

Name | Type | Description
--- | --- | ---
$user | string |
$password | string |
$type | string |

Returns

Type | Description
--- | ---
string |

Throws

Exception | Description
--- | ---
\Zend_Http_Client_Exception |

Details

see
  \http://www.faqs.org/rfcs/rfc2617.html

`encodeFormData( string $boundary, string $name, mixed $value, string $filename = null, array $headers = array ) : string`
static

Encode 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

Type | Description
--- | ---
string |

`getAdapter( ) : \Zend_Http_Client_Adapter_Interface`

Load the connection adapter

Returns

Type | Description
--- | ---
\Zend_Http_Client_Adapter_Interface | $adapter

`getCookieJar( ) : \Zend_Http_CookieJar|null`

Return the current cookie jar or null if none.

Returns

Type | Description
--- | ---
\Zend_Http_CookieJarnull |

`getHeader( string $key ) : string|array|null`

Get 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
--- | ---
stringarraynull | The header value or null if it is not set

`getLastRequest( ) : string`

Get the last HTTP request as string

Returns

Type | Description
--- | ---
string |

`getLastResponse( ) : \Zend_Http_Response`

Get 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

Type | Description
--- | ---
\Zend_Http_Response | or null if none

`getRedirectionsCount( ) : int`

Get the number of redirections done on the last request

Returns

Type | Description
--- | ---
int |

`getStream( ) : boolean|string`

Get status of streaming for received data

Returns

Type | Description
--- | ---
booleanstring |

`getUnmaskStatus( ) : boolean`

Returns the currently configured unmask status

Returns

Type | Description
--- | ---
boolean |

`getUri( boolean $as_string = false ) : \Zend_Uri_Http|string`

Get the URI for the next request

Parameters

Name | Type | Description
--- | --- | ---
$as_string | boolean | If true, will return the URI as a string

Returns

Type | Description
--- | ---
\Zend_Uri_Httpstring |

`request( string $method = null ) : \Zend_Http_Response`

Send the HTTP request and return an HTTP response object

Parameters

Name | Type | Description
--- | --- | ---
$method | string |

Returns

Type | Description
--- | ---
\Zend_Http_Response |

Throws

Exception | Description
--- | ---
\Zend_Http_Client_Exception |

`resetParameters( bool $clearAll = false ) : \Zend_Http_Client`

Clear 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

Type | Description
--- | ---
\Zend_Http_Client |

`setAdapter( \Zend_Http_Client_Adapter_Interface|string $adapter ) : null`

Load 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

Parameters

Name | Type | Description
--- | --- | ---
$adapter | \Zend_Http_Client_Adapter_Interface|string |

Returns

Type | Description
--- | ---
null |

Throws

Exception | Description
--- | ---
\Zend_Http_Client_Exception |

`setAuth( string|false $user, string $password, string $type = self ) : \Zend_Http_Client`

Set 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

Returns

Type | Description
--- | ---
\Zend_Http_Client |

Throws

Exception | Description
--- | ---
\Zend_Http_Client_Exception |

Details

see
  \http://www.faqs.org/rfcs/rfc2617.html

`setConfig( \Zend_Config $config = array ) : \Zend_Http_Client`

Set configuration parameters for this HTTP client

Parameters

Name | Type | Description
--- | --- | ---
$config | \Zend_Config | | array $config

Returns

Type | Description
--- | ---
\Zend_Http_Client |

Throws

Exception | Description
--- | ---
\Zend_Http_Client_Exception |

`setCookie( \Zend_Http_Cookie|string $cookie, string|null $value = null ) : \Zend_Http_Client`

Add 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.

Returns

Type | Description
--- | ---
\Zend_Http_Client |

Throws

Exception | Description
--- | ---
\Zend_Http_Client_Exception |

`setCookieJar( \Zend_Http_CookieJar|boolean $cookiejar = true ) : \Zend_Http_Client`

Set 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

Returns

Type | Description
--- | ---
\Zend_Http_Client |

Throws

Exception | Description
--- | ---
\Zend_Http_Client_Exception |

`setEncType( string $enctype = self ) : \Zend_Http_Client`

Set the encoding type for POST data

Parameters

Name | Type | Description
--- | --- | ---
$enctype | string |

Returns

Type | Description
--- | ---
\Zend_Http_Client |

`setFileUpload( string $filename, string $formname, string $data = null, string $ctype = null ) : \Zend_Http_Client`

Set 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)

Returns

Type | Description
--- | ---
\Zend_Http_Client |

Throws

Exception | Description
--- | ---
\Zend_Http_Client_Exception |

`setHeaders( string|array $name, mixed $value = null ) : \Zend_Http_Client`

Set 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

Returns

Type | Description
--- | ---
\Zend_Http_Client |

Throws

Exception | Description
--- | ---
\Zend_Http_Client_Exception |

`setMethod( string $method = self ) : \Zend_Http_Client`

Set 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 |

Returns

Type | Description
--- | ---
\Zend_Http_Client |

Throws

Exception | Description
--- | ---
\Zend_Http_Client_Exception |

`setParameterGet( string|array $name, string $value = null ) : \Zend_Http_Client`

Set a GET parameter for the request. Wrapper around _setParameter

Parameters

Name | Type | Description
--- | --- | ---
$name | string|array |
$value | string |

Returns

Type | Description
--- | ---
\Zend_Http_Client |

`setParameterPost( string|array $name, string $value = null ) : \Zend_Http_Client`

Set a POST parameter for the request. Wrapper around _setParameter

Parameters

Name | Type | Description
--- | --- | ---
$name | string|array |
$value | string |

Returns

Type | Description
--- | ---
\Zend_Http_Client |

`setRawData( string|resource $data, string $enctype = null ) : \Zend_Http_Client`

Set 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

Type | Description
--- | ---
\Zend_Http_Client |

`setStream( string|boolean $streamfile = true ) : \Zend_Http_Client`

Set streaming for received data

Parameters

Name | Type | Description
--- | --- | ---
$streamfile | string|boolean | Stream file, true for temp file, false/null for no streaming

Returns

Type | Description
--- | ---
\Zend_Http_Client |

`setUnmaskStatus( boolean $status = true ) : \Zend_Http_Client`

Set 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

Type | Description
--- | ---
\Zend_Http_Client |

`setUri( \Zend_Uri_Http|string $uri ) : \Zend_Http_Client`

Set the URI for the next request

Parameters

Name | Type | Description
--- | --- | ---
$uri | \Zend_Uri_Http|string |

Returns

Type | Description
--- | ---
\Zend_Http_Client |

Throws

Exception | Description
--- | ---
\Zend_Http_Client_Exception |

Documentation was generated by DocBlox 0.13.3.