目次
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()
に置き換えるだけです。