Programmer's Reference Guide
| 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().
Пример #1 Инстанцирование объекта Zend_Http_Client
- <?php
- require_once 'Zend/Http/Client.php';
- 'maxredirects' => 0,
- 'timeout' => 30));
- // Этот код делает то же самое:
- $client = new Zend_Http_Client();
- $client->setUri('http://example.org');
- 'maxredirects' => 0,
- 'timeout' => 30));
- ?>
Параметры конфигурации
Конструктор и метод setConfig() принимают ассоциативный
массив параметров конфигурации. Установка этих параметров является
опциональной, поскольку все они имеют значения по умолчанию.
| Параметр | Описание | Тип | Значение по умолчанию |
|---|---|---|---|
| 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() довольно простое, и редко требуется больше
кода, чем в эти три строчки:
Пример #2 Выполнение простого запроса GET
- <?php
- require_once 'Zend/Http/Client.php';
- $client = new Zend_Http_Client('http://example.org');
- $response = $client->request();
- ?>
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 (см. пример выше).
Пример #3 Использование методов запроса, отличных от GET
- <?php
- // Выполнение запроса POST
- $response = $client->request('POST');
- // Еще один способ сделать то же самое:
- $client->setMethod(Zend_Http_Client::POST);
- $response = $client->request();
- ?>
Добавление параметров GET и POST
Добавление параметров GET в HTTP-запрос довольно простое, это может
быть сделано посредством определения параметров как часть URL или с
использованием метода setParameterGet(). Этот метод
принимает имя параметра GET и его значение первый и второй аргументы
соответственно. Метод setParameterGet()
может также принимать ассоциативный массив пар имя => значение, что
удобно, если нужно установить несколько параметров GET.
Пример #4 Установка параметров GET
- <?php
- // Установка параметра 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().
Пример #5 Установка параметров POST
Получение последних запроса и ответа
Zend_Http_Client предоставляет методы для получения последнего
отправленного запроса и последнего ответа, полученного через
объект клиента. Метод
Zend_Http_Client->getLastRequest() не требует
параметров и возвращает последний HTTP-запрос, отправленный
через объект клиента, в виде строки. Аналогично,
Zend_Http_Client->getLastResponse() возвращает
последний HTTP-ответ, полученный через объект клиента, в виде
объекта Zend_Http_Response.
| Zend_Http |
