Rozdział 9. Zend_Http
Poprzedni |  | Następny

## Rozdział 9. Zend_Http

## 9.1. Zend_Http_Client

### 9.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
`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 9.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>';
    }
    ?>

### 9.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 9.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 9.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 9.1.3, „Żądania do wielu domen”

### 9.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 9.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();
        ?>

### 9.1.4. Zmiana timeoutu HTTP

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

| Notatka
Domyślny timeout to 10 sekund.

### 9.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
Nagłówki muszą mieć taki format: ``Nagłówek: wartość``

### 9.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 9.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()`.

Poprzedni |  | Następny
8.2. Zend_Filter_Input | Spis treści | 9.2. Zend_Http_Response