Rozdział 8. Zend_Http

Spis treści

8.1. Zend_Http_Client
8.1.1. Wprowadzenie
8.1.2. Proste żądanie GET z określonymi nagłówkami HTTP
8.1.3. Żądania do wielu domen
8.1.4. Zmiana timeoutu HTTP
8.1.5. Dynamiczne ustawianie nagłówków HTTP
8.1.6. Wykonywanie żądań HTTP POST, PUT, oraz DELETE
8.2. Zend_Http_Response
8.2.1. Wprowadzenie

8.1. Zend_Http_Client

8.1.1. Wprowadzenie

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] 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>';
    }
    ?>

8.1.2. Proste żądanie GET z określonymi nagłówkami HTTP

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”

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] 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();
    ?>   

8.1.4. Zmiana timeoutu HTTP

Metoda Zend_Http_Client::setTimeout() pozwala na zmianę wartości timeoutu dla połączeń HTTP w sekundach.

[Notatka] Notatka

Domyślny timeout to 10 sekund.

8.1.5. Dynamiczne ustawianie nagłówków HTTP

Używając metody Zend_Http_Client::setHeaders() możesz przekazać tablicę nagłówków.

[WAŻNE] WAŻNE

Nagłówki muszą mieć taki format: Nagłówek: wartość

8.1.6. Wykonywanie żądań HTTP POST, PUT, oraz DELETE

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