Главная / Zend Manual Core
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. <?php
  2.     require_once 'Zend/Http/Client.php';
  3.  
  4.     $client = new Zend_Http_Client('http://example.org', array(
  5.         'maxredirects' => 0,
  6.         'timeout'      => 30));
  7.  
  8.     // Этот код делает то же самое:
  9.     $client = new Zend_Http_Client();
  10.     $client->setUri('http://example.org');
  11.     $client->setConfig(array(
  12.         'maxredirects' => 0,
  13.         'timeout'      => 30));
  14.  
  15. ?>

Параметры конфигурации

Конструктор и метод 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. <?php
  2.     require_once 'Zend/Http/Client.php';
  3.  
  4.     $client = new Zend_Http_Client('http://example.org');
  5.     $response = $client->request();
  6. ?>
Метод 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. <?php
  2.     // Выполнение запроса POST
  3.     $response = $client->request('POST');
  4.  
  5.     // Еще один способ сделать то же самое:
  6.     $client->setMethod(Zend_Http_Client::POST);
  7.     $response = $client->request();
  8. ?>

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

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

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

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

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

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

  1. <?php
  2.     // Установка параметра POST
  3.     $client->setParameterPost('language', 'fr');
  4.  
  5.     // Установка нескольких параметров POST,
  6.     // один из них - с несколькими значениями
  7.     $client->setParameterPost(array(
  8.         'language'  => 'es',
  9.         'country'   => 'ar',
  10.         'selection' => array(45, 32, 80)
  11.     ));
  12. ?>
Заметьте, что отправляя запрос 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