Zend_Http

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

  1. span style="color: #ff0000;">'Zend/Http/Client.php''http://example.org''maxredirects' => 0,
  2.         'timeout'      => 30));
  3.  
  4.     // Этот код делает то же самое:
  5. 'http://example.org''maxredirects' => 0,
  6.         '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

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

  1. span style="color: #808080; font-style: italic;">// Выполнение запроса POST
  2.     $response = $client->request('POST');
  3.  
  4.     // Еще один способ сделать то же самое:

Добавление параметров GET и POST

Добавление параметров GET в HTTP-запрос довольно простое, это может быть сделано посредством определения параметров как часть URL или с использованием метода setParameterGet(). Этот метод принимает имя параметра GET и его значение первый и второй аргументы соответственно. Метод setParameterGet() может также принимать ассоциативный массив пар имя => значение, что удобно, если нужно установить несколько параметров GET.

Example #4 Установка параметров GET

  1. span style="color: #808080; font-style: italic;">// Установка параметра GET с использованием метода setParameterGet
  2.     $client->setParameterGet('knight', 'lancelot');
  3.  
  4.     // Эвивалентный код с установкой через URL:
  5.     $client->setUri('http://example.com/index.php?knight=lancelot');
  6.  
  7.     // Добавление нескольких параметров в одном вызове
  8. 'first_name'  => 'Bender',
  9.         'middle_name' => 'Bending'
  10.         'made_in'     => 'Mexico'

В то время как параметры GET могут отправляться с любыми методами запроса, параметры POST могут отправляться только в теле запроса POST. Добавление параметров POST к запросу очень похоже на добавление параметров GET и выполняется через метод setParameterPost().

Example #5 Установка параметров POST

  1. span style="color: #808080; font-style: italic;">// Установка параметра POST
  2. 'language', 'fr');
  3.  
  4.     // Установка нескольких параметров POST,
  5.     // один из них - с несколькими значениями
  6. 'language'  => 'es',
  7.         'country'   => 'ar',
  8.         'selection'
Заметьте, что отправляя запрос POST, вы можете установить как параметры POST, так и параметры GET. С другой стороны, хотя установка параметров POST для не-POST запросов не вызывает ошибки, она не имеет практического смысла. Если запрос не производится по методу POST, то параметры POST просто игнорируются.

Получение последних запроса и ответа

Zend_Http_Client предоставляет методы для получения последнего отправленного запроса и последнего ответа, полученного через объект клиента. Метод Zend_Http_Client->getLastRequest() не требует параметров и возвращает последний HTTP-запрос, отправленный через объект клиента, в виде строки. Аналогично, Zend_Http_Client->getLastResponse() возвращает последний HTTP-ответ, полученный через объект клиента, в виде объекта Zend_Http_Response.

[1] См. RFC 2616 - .

Zend_Http