Zend_Http_Client - Введение
Введение
Zend_Http_Client предоставляет простой интерфейс для выполнения
HTTP-запросов. Zend_Http_Client поддерживает как большинство простых
возможностей, ожидаемых от любого HTTP-клиента, так и более сложные
функции, такие, как HTTP-аутентификация и выгрузка файлов. При
успешно выполненных запросах (и большинстве неуспешно выполненных)
возвращается объект Zend_Http_Response, который предоставляет доступ
к заголовкам и телу ответа (см. Zend_Http_Response).
Конструктор класса опционально принимает URL (может быть строкой или
объектом Zend_Uri_Http) и массив конфирурационных параметров. Оба
параметра могут быть опущены и установлены позднее через методы
setUri() и setConfig() .
Example #1 Инстанцирование объекта Zend_Http_Client
span style="color: #ff0000;">'Zend/Http/Client.php''http://example.org''maxredirects' => 0,
'timeout' => 30));
// Этот код делает то же самое:
'http://example.org''maxredirects' => 0,
'timeout'
Параметры конфигурации
Конструктор и метод setConfig() принимают ассоциативный
массив параметров конфигурации. Установка этих параметров является
опциональной, поскольку все они имеют значения по умолчанию.
Параметры конфигурации Zend_Http_Client
Параметр |
Описание |
Тип |
Значение по умолчанию |
maxredirects |
Максимальное количество последующих
перенаправлений (0 = ни одного перенаправления)
|
integer |
5 |
strictredirects |
Строгое следование спецификации RFC при
перенаправлениях (см. HTTP Redirections)
|
boolean |
false |
useragent |
Идентификатор агента пользователя (отправляется
в заголовке запроса)
|
string |
'Zend_Http_Client' |
timeout |
Таймаут соединения в секундах
|
integer |
10 |
httpversion |
Версия протокола HTTP
|
float (1.1 or 1.0) |
1.1 |
adapter |
Используемый класс адаптера соединения
(см. Zend_Http_Client - Connection Adapters)
|
mixed |
'Zend_Http_Client_Adapter_Socket' |
keepalive |
Включение поддержки соединения keep-alive с
сервером. Может быть полезно и повышает
поизводительность, если выполняется несколько
последовательных запросов к одному и тому же
серверу.
|
boolean |
false |
Выполнение базовых HTTP-запросов
Выполнение простых HTTP-запросов с использованием метода
request() довольно простое, и редко требуется больше
кода, чем в эти три строчки:
Example #2 Выполнение простого запроса GET
span style="color: #ff0000;">'Zend/Http/Client.php''http://example.org'
Метод request() принимает один необязательный параметр
- метод запроса. Это могут быть методы GET, POST, PUT, HEAD, DELETE,
TRACE, OPTIONS или CONNECT, определенные в протоколе HTTP.
[1]
http://www.w3.org/Protocols/rfc2616/rfc2616.html
.
Для удобства все они определены как константы класса:
Zend_Http_Request::GET, Zend_Http_Request::POST и т.д.
Если метод запроса не был указан, то используемый метод определяется
последним вызовом setMethod() . Если
setMethod() не был вызван, то по умолчанию используется
метод GET (см. пример выше).
Example #3 Использование методов запроса, отличных от GET
span style="color: #808080; font-style: italic;">// Выполнение запроса POST
$response = $client->request('POST');
// Еще один способ сделать то же самое:
Добавление параметров GET и POST
Добавление параметров GET в HTTP-запрос довольно простое, это может
быть сделано посредством определения параметров как часть URL или с
использованием метода setParameterGet() . Этот метод
принимает имя параметра GET и его значение первый и второй аргументы
соответственно. Метод setParameterGet()
может также принимать ассоциативный массив пар имя => значение, что
удобно, если нужно установить несколько параметров GET.
Example #4 Установка параметров GET
span style="color: #808080; font-style: italic;">// Установка параметра GET с использованием метода setParameterGet
$client->setParameterGet('knight', 'lancelot');
// Эвивалентный код с установкой через URL:
$client->setUri('http://example.com/index.php?knight=lancelot');
// Добавление нескольких параметров в одном вызове
'first_name' => 'Bender',
'middle_name' => 'Bending'
'made_in' => 'Mexico'
В то время как параметры GET могут отправляться с любыми методами
запроса, параметры POST могут отправляться только в теле запроса
POST. Добавление параметров POST к запросу очень похоже на
добавление параметров GET и выполняется через метод
setParameterPost() .
Example #5 Установка параметров POST
span style="color: #808080; font-style: italic;">// Установка параметра POST
'language', 'fr');
// Установка нескольких параметров POST,
// один из них - с несколькими значениями
'language' => 'es',
'country' => 'ar',
'selection'
Заметьте, что отправляя запрос POST, вы можете установить как
параметры POST, так и параметры GET. С другой стороны, хотя
установка параметров POST для не-POST запросов не вызывает ошибки,
она не имеет практического смысла. Если запрос не производится по
методу POST, то параметры POST просто игнорируются.
Получение последних запроса и ответа
Zend_Http_Client предоставляет методы для получения последнего
отправленного запроса и последнего ответа, полученного через
объект клиента. Метод
Zend_Http_Client->getLastRequest() не требует
параметров и возвращает последний HTTP-запрос, отправленный
через объект клиента, в виде строки. Аналогично,
Zend_Http_Client->getLastResponse() возвращает
последний HTTP-ответ, полученный через объект клиента, в виде
объекта Zend_Http_Response.
|
|