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()
.