Spis treści
Zend_Http_Client dostarcza prosty interfejs, za pomocą
ktorego można wykonywać żądania HTTP. Zend_Http_Client
może wykonywać żądania GET, POST, PUT oraz DELETE.
![]() |
Notatka |
|---|---|
Zend_Http_Client domyślnie podąża za 5 przekierowaniami
HTTP. Aby zmienić te zachowanie, przekaż maksymalną ilość dozwolonych
przekierowań jako parametr do metody get().
|
Przykład 8.1. Wykonanie prostego żądania 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>Wystąpił błąd</p>';
}
} catch (Zend_Http_Client_Exception $e) {
echo '<p>Wystąpił błąd (' .$e->getMessage(). ')</p>';
}
?>
Konstruktor Zend_Http_Client tworzy instancję Zend_Http_Client
służącą do wysyłania żądań HTTP.
Kiedy używamy Zend_Http_Client na pojedynczym adresie URL,
w większości przypadków można przekazać adres URL i odpowiednie nagłówki
do konstruktora, jak w poniższym przykładzie:
Przykład 8.2. Tworzenie prostego klienta Zend_Http_Client
<?php
require_once 'Zend/Http/Client.php';
// Określamy adres URL oraz pojedynczy nagłówek
$http = new Zend_Http_Client('http://example.org', 'Accept: text/html');
?>
Przykład 8.3. Wysyłanie wielu nagłówków
<?php
require_once 'Zend/Http/Client.php';
// Określamy adres URL oraz nagłówki
$http = new Zend_Http_Client('http://example.org',
array('Accept: text/html', 'Accept-Language: en-us,en;q=0.5'));
?>
Jeśli chcesz użyć Zend_Http_Client aby wysyłać żądania
do wielu adresów URL, zobacz
Sekcja 8.1.3, „Żądania do wielu domen”
Zend_Http_Client umożliwia wykonywanie żądań do wielu
domen przez ustawianie adresu URL za pomocą metody
Zend_Http_Client::setUri().
![]() |
Notatka |
|---|---|
Można to wykorzystać na przykład wtedy, gdy chcemy wykonać żądania do wielu kanałów RSS. |
Przykład 8.4. Wykonywanie żądań do wielu domen
<?php
require_once 'Zend/Http/Client.php';
// Tworzymy instancję klienta HTTP
$http = new Zend_Http_Client();
// Ustawiamy adres URI na główny kanał RSS serwisu Slashdot
$http->setUri('http://rss.slashdot.org/Slashdot/slashdot');
// Odbieramy RSS
$slashdot = $http->get();
// Ustawiamy adres na kanał RSS serwisu BBC
$http->setUri('http://newsrss.bbc.co.uk/rss/newsonline_world_edition/technology/rss.xml');
// Odbieramy RSS
$bbc = $http->get();
?>
Metoda Zend_Http_Client::setTimeout() pozwala na zmianę
wartości timeoutu dla połączeń HTTP w sekundach.
![]() |
Notatka |
|---|---|
Domyślny timeout to 10 sekund. |
Używając metody Zend_Http_Client::setHeaders() możesz
przekazać tablicę nagłówków.
![]() |
WAŻNE |
|---|---|
Nagłówki muszą mieć taki format:
|
Wykonywanie żądań HTTP POST, PUT, oraz DELETE jest obsługiwane przez Zend_Http_Client
za pomocą trzech metod: post(), put(), oraz delete(). Metody
post() oraz put() przyjmują pojedynczy parametr, $data,
w którym powinien być umieszczony łańcuch znaków zawierający odpowiednio zakodowane dane:
nazwa=wartosc&foo=bar. Metoda delete() nie
przyjmuje żadnych parametrów.
Przykład 8.5. Wysyłanie danych POST za pomocą Zend_Http_Client
<?php
require_once 'Zend/Http/Client.php';
// Tworzymy instancję klienta HTTP
$http = new Zend_Http_Client();
// Ustawiamy adres URI
$http->setUri('http://example.org/post/processor');
// Zapisujemy określone wartości zmiennych GET jako dane HTTP POST
$postData = 'foo=' . urlencode($_GET['foo']) . '&bar=' . urlencode($_GET['bar']);
// Wykonujemy żądanie HTTP POST i zapisujemy odpowiedź
$httpResponse = $http->post($postData);
?>
Wykonywanie żądań PUT wygląda tak samo jak powyższy przykład
wykonywania żądań POST; jedyną różnicą jest wywołanie metody
put() zamiast post().