Zend_Http_Client - ВведениеВведение
Zend_Http_Client предоставляет простой интерфейс для выполнения
HTTP-запросов. Zend_Http_Client поддерживает как большинство простых
возможностей, ожидаемых от любого HTTP-клиента, так и более сложные
функции, такие, как HTTP-аутентификация и выгрузка файлов. При
успешно выполненных запросах (и большинстве неуспешно выполненных)
возвращается объект Zend_Http_Response, который предоставляет доступ
к заголовкам и телу ответа (см. ).
Конструктор класса опционально принимает URL (может быть строкой или
объектом Zend_Uri_Http) и массив конфирурационных параметров. Оба
параметра могут быть опущены и установлены позднее через методы
setUri() и setConfig().
Инстанцирование объекта Zend_Http_Client
0,
'timeout' => 30));
// Этот код делает то же самое:
$client = new Zend_Http_Client();
$client->setUri('http://example.org');
$client->setConfig(array(
'maxredirects' => 0,
'timeout' => 30));
?>]]>Параметры конфигурации
Конструктор и метод setConfig() принимают ассоциативный
массив параметров конфигурации. Установка этих параметров является
опциональной, поскольку все они имеют значения по умолчанию.
Параметры конфигурации Zend_Http_ClientПараметрОписаниеТипЗначение по умолчаниюmaxredirects
Максимальное количество последующих
перенаправлений (0 = ни одного перенаправления)
integer5strictredirects
Строгое следование спецификации RFC при
перенаправлениях (см. )
booleanfalseuseragent
Идентификатор агента пользователя (отправляется
в заголовке запроса)
string'Zend_Http_Client'timeout
Таймаут соединения в секундах
integer10httpversion
Версия протокола HTTP
float (1.1 or 1.0)1.1adapter
Используемый класс адаптера соединения
(см. )
mixed'Zend_Http_Client_Adapter_Socket'keepalive
Включение поддержки соединения keep-alive с
сервером. Может быть полезно и повышает
поизводительность, если выполняется несколько
последовательных запросов к одному и тому же
серверу.
booleanfalse
Выполнение базовых HTTP-запросов
Выполнение простых HTTP-запросов с использованием метода
request() довольно простое, и редко требуется больше
кода, чем в эти три строчки:
Выполнение простого запроса GET
request();
?>]]>
Метод request() принимает один необязательный параметр
- метод запроса. Это могут быть методы GET, POST, PUT, HEAD, DELETE,
TRACE, OPTIONS или CONNECT, определенные в протоколе HTTP.
См. RFC 2616 - .
.
Для удобства все они определены как константы класса:
Zend_Http_Request::GET, Zend_Http_Request::POST и т.д.
Если метод запроса не был указан, то используемый метод определяется
последним вызовом setMethod(). Если
setMethod() не был вызван, то по умолчанию используется
метод GET (см. пример выше).
Использование методов запроса, отличных от GET
request('POST');
// Еще один способ сделать то же самое:
$client->setMethod(Zend_Http_Client::POST);
$response = $client->request();
?>]]>Добавление параметров GET и POST
Добавление параметров GET в HTTP-запрос довольно простое, это может
быть сделано посредством определения параметров как часть URL или с
использованием метода setParameterGet(). Этот метод
принимает имя параметра GET и его значение первый и второй аргументы
соответственно. Метод setParameterGet()
может также принимать ассоциативный массив пар имя => значение, что
удобно, если нужно установить несколько параметров GET.
Установка параметров GET
setParameterGet('knight', 'lancelot');
// Эвивалентный код с установкой через URL:
$client->setUri('http://example.com/index.php?knight=lancelot');
// Добавление нескольких параметров в одном вызове
$client->setParameterGet(array(
'first_name' => 'Bender',
'middle_name' => 'Bending'
'made_in' => 'Mexico',
));
?>]]>
В то время как параметры GET могут отправляться с любыми методами
запроса, параметры POST могут отправляться только в теле запроса
POST. Добавление параметров POST к запросу очень похоже на
добавление параметров GET и выполняется через метод
setParameterPost().
Установка параметров POST
setParameterPost('language', 'fr');
// Установка нескольких параметров POST,
// один из них - с несколькими значениями
$client->setParameterPost(array(
'language' => 'es',
'country' => 'ar',
'selection' => array(45, 32, 80)
));
?>]]>
Заметьте, что отправляя запрос POST, вы можете установить как
параметры POST, так и параметры GET. С другой стороны, хотя
установка параметров POST для не-POST запросов не вызывает ошибки,
она не имеет практического смысла. Если запрос не производится по
методу POST, то параметры POST просто игнорируются.
Получение последних запроса и ответа
Zend_Http_Client предоставляет методы для получения последнего
отправленного запроса и последнего ответа, полученного через
объект клиента. Метод
Zend_Http_Client->getLastRequest() не требует
параметров и возвращает последний HTTP-запрос, отправленный
через объект клиента, в виде строки. Аналогично,
Zend_Http_Client->getLastResponse() возвращает
последний HTTP-ответ, полученный через объект клиента, в виде
объекта Zend_Http_Response.