Содержание
Zend_Http_Client
предоставляет простой интерфейс для
произведения запросов HTTP. Zend_Http_Client
может
производить запросы GET, POST, PUT и DELETE.
Замечание | |
---|---|
По умолчанию Zend_Http_Client реализует до 5-ти
переадресаций HTTP. Для того, чтобы изменить это поведение, передавайте
максимальное допустимое количество переадресаций методу get() .
|
Пример 8.1. Выполнение базовых запросов GET
<?php require_once 'Zend/Http/Client.php'; try { $http = new Zend_Http_Client('http://example.org'); $response = $http->get(); if ($response->isSuccessful()) { echo $response->getBody(); } else { echo '<p>Произошла ошибка</p>'; } } catch (Zend_Http_Client_Exception $e) { echo '<p>Произошла ошибка (' .$e->getMessage(). ')</p>'; } ?>
Конструктор Zend_Http_Client
создает экземпляр
Zend_Http_Client
для отправки запросов HTTP.
Если используете Zend_Http_Client
для одного URL,
то в большинстве случаев можете передавать URL и соответствующие
заголовки конструктору, как в
следующих примерах:
Пример 8.2. Создание основного Zend_Http_Client
<?php require_once 'Zend/Http/Client.php'; // Определение URL и одного заголовка $http = new Zend_Http_Client('http://example.org', 'Accept: text/html'); ?>
Пример 8.3. Передача нескольких заголовков
<?php require_once 'Zend/Http/Client.php'; // Установка URL и нескольких заголовков $http = new Zend_Http_Client('http://example.org', array('Accept: text/html', 'Accept-Language: en-us,en;q=0.5')); ?>
Если вы хотите использовать Zend_Http_Client
для
отправки запросов больше, чем по одному URL-у, то
см. Раздел 8.1.3, «
Отправка запросов нескольким доменам
».
Zend_Http_Client
поддерживает отправку запросов
нескольким доменам посредством установки URL для запроса
методом Zend_Http_Client::setUri()
.
Замечание | |
---|---|
Это очень полезно, когда делаются запросы к нескольким лентам RSS. |
Пример 8.4. Отправка запросов нескольким доменам
<?php require_once 'Zend/Http/Client.php'; // Создание объекта клиента $http = new Zend_Http_Client(); // Установка URI к основной ленте Slashdot $http->setUri('http://rss.slashdot.org/Slashdot/slashdot'); // Извлечение ленты $slashdot = $http->get(); // Теперь получаем ленту новостей BBC $http->setUri('http://newsrss.bbc.co.uk/rss/newsonline_world_edition/technology/rss.xml'); // Извлечение ленты $bbc = $http->get(); ?>
Zend_Http_Client::setTimeout()
позволяет установить таймаут
соединения HTTP в секундах.
Замечание | |
---|---|
Таймаут по умолчанию составляет 10 секунд. |
Используя Zend_Http_Client::setHeaders()
, вы можете добавлять
массив заголовков.
Важно | |
---|---|
Заголовки должны следовать следующему формату:
|
В Zend_Http_Client
выполнение HTTP-запросов POST,
PUT и DELETE облегчено тремя методами: post()
,
put()
и delete()
, соответственно.
Методы post()
и put()
принимают единственный
параметр $data
, в котором должна быть строка с должным
образом закодированными данными, как в следующем примере:
name=value&foo=bar
.
Метод delete()
не имеет параметров.
Пример 8.5. Отправка данных POST с помощью Zend_Http_Client
<?php require_once 'Zend/Http/Client.php'; // Создание объекта клиента $http = new Zend_Http_Client(); // Установка URI к обработчику данных POST $http->setUri('http://example.org/post/processor'); // Сохранение специальных переменных GET как данные HTTP POST $postData = 'foo=' . urlencode($_GET['foo']) . '&bar=' . urlencode($_GET['bar']); // Выполнение запроса HTTP POST и сохранение ответа HTTP $httpResponse = $http->post($postData); ?>
Выполнение запроса PUT точно такое же, как в примере выше для
выполнения запросов POST - просто замените метод put()
на post()
.