Zend Framework [1] - HTTP Client 入門

2007.09.10 Author: Jas

2007年7月2日に正式版がリリースされた「Zend Framework 1.0.0」ですが、まだ本家サイトのマニュアルも、日本語サイトの情報量も少ない状況です。そんな中、このフレームワークの検証係を任命されたので、ソースコードを追いながら使い方を調査しています。

オブジェクト指向型プログラミングに慣れていないので、ソースコードを追うだけでも一苦労なのですが、マニュアルやソースを読んでわかったこと、実際にスクリプトを試し書きしてみてわかったことなどをちょっとだけ紹介したいと思います。

まずは、数ある Zend Framework API 群のなかでも、わかりやすく使いやすいと思ったAPIのひとつ、HTTP Clientの入門編です。

開発環境: Zend Framework 1.0.1 / PHP 5.1.6

<?php
// ライブラリの読み込み
require_once ('Zend/Http/Client.php');

// インスタンス生成
$client = new Zend_Http_Client('データの送信先URL');

// 設定
$client->setConfig(array('maxredirects' => 0,
'timeout' => 30));

まずはライブラリーをロードし、Zend_Http_Clientのインスタンスを生成します。
デフォルトでは接続タイムアウト10秒になっていますが、この設定を変える場合にはsetConfig()を使います。接続タイムアウト以外にもリダイレクトをたどる最大数やUser-Agent、HTTPのバージョンなども設定できます。

// POSTデータ
$client->setParameterPost(array('lang' => 'Japanese',
                               'group' => array(1, 3, 5)));

// GETデータ
$client->setParameterGet(array(page' => 1));

// Cookieのセット
$client->setCookie(array('user' => 'Jasmine',
'pass' => 'PASS'));

// Basic認証
$client->setAuth('user', 'pass');

次に、送信するデータを配列で設定します。
POSTやGET、Cookie等のほか、ベーシック認証の認証データも送信することができます。

// リクエストの送信
try {
    $response = $client->request('POST');
} catch (Zend_Exception $exception) {
    echo "エラーメッセージ: " . $exception->getMessage();
}

データの設定が終わったら、リクエストを送信します。
データの送信方法を引数に指定して、request()を使用ます。

エラー時の対処はPHP5からサポートされた例外処理(try-catch)を使います。

// ヘッダー&ボディの取得
if ($response != null) {
    $header = $response->getHeaders();
    $body   = $response->getBody();
}

リクエストの送信に成功すれば、getHeaders()とgetBody()でデータを取得することができます。

Zend_Httpを使うと、このほかにもリダイレクト処理やファイルのアップロード、複数リクエストの送信ができるようです。詳しくはマニュアルを参考に・・・

Zend_Http_Clientの入門編は以上です。

名古屋のWebシステム開発・ネットワーク構築会社 コネクティボへ