目次
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
のコンストラクタで、HTTP
リクエストを送信するための Zend_Http_Client
のインスタンスを作成します。
単一の URL に対して Zend_Http_Client
を使用する場合は、
たいていの場合は以下の例のように コンストラクタ
で 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
で複数のドメインに対してリクエストを送信するには、
Zend_Http_Client::setUri()
を使用して URL を指定します。
注意 | |
---|---|
これは、例えば複数の RSS フィードを取得する場合などに有用です。 |
例 8.4. 複数のドメインに対するリクエスト
<?php require_once 'Zend/Http/Client.php'; // クライアントオブジェクトのインスタンスを作成します $http = new Zend_Http_Client(); // Slashdot のメインフィードの URI を指定します $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. Zend_Http_Client による POST データの送信
<?php require_once 'Zend/Http/Client.php'; // クライアントオブジェクトのインスタンスを作成します $http = new Zend_Http_Client(); // POST データを処理する URI を設定します $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
リクエストの場合と同じで、単に
post()
メソッドを put()
に置き換えるだけです。