The Zend_Http_Client_Adapter_Proxy adapter is similar to the
default Socket adapter - only the connection is made through an HTTP
proxy server instead of a direct connection to the target server. This
allows usage of Zend_Http_Client behind proxy servers - which is
sometimes needed for security or performance reasons.
Using the Proxy adapter requires several additional configuration parameters to be set, in addition to the default 'adapter' option:
Table 80. Zend_Http_Client configuration parameters
| Parameter | Description | Expected Type | Example Value |
|---|---|---|---|
| proxy_host | Proxy server address | string | 'proxy.myhost.com' or '10.1.2.3' |
| proxy_port | Proxy server TCP port | integer | 8080 (default) or 81 |
| proxy_user | Proxy user name, if required | string | 'shahar' or '' for none (default) |
| proxy_pass | Proxy password, if required | string | 'secret' or '' for none (default) |
| proxy_auth | Proxy HTTP authentication type | string | Zend_Http_Client::AUTH_BASIC (default) |
proxy_host should always be set - if it is not set, the client will
fall back to a direct connection using
Zend_Http_Client_Adapter_Socket. proxy_port defaults to '8080' -
if your proxy listens on a different port you must set this one as well.
proxy_user and proxy_pass are only required if your proxy server requires you to authenticate. Providing these will add a 'Proxy-Authentication' header to the request. If your proxy does not require authentication, you can leave these two options out.
proxy_auth sets the proxy authentication type, if your proxy server requires authentication. Possibly values are similar to the ones accepted by the Zend_Http_Client::setAuth() method. Currently, only basic authentication (Zend_Http_Client::AUTH_BASIC) is supported.
Example 477. Using Zend_Http_Client behind a proxy server
<?php
// Set the configuration parameters
$config = array(
'adapter' => 'Zend_Http_Client_Adapter_Proxy',
'proxy_host' => 'proxy.int.zend.com',
'proxy_port' => 8000,
'proxy_user' => 'shahar.e',
'proxy_pass' => 'bananashaped'
);
// Instantiate a client object
$client = new Zend_Http_Client('http://www.example.com', $config);
// Continue working...
As mentioned, if proxy_host is not set or is set to a blank string, the connection will fall back to a regular direct connection. This allows you to easily write your application in a way that allows a proxy to be used optionally, according to a configuration parameter.
Note
Since the proxy adapter inherits from
Zend_Http_Client_Adapter_Socket, you can use the stream
context access method (see this section)
to set stream context options on Proxy connections as demonstrated above.




