肉とビールとパンケーキ by @sotarok

少し大人になった「肉とご飯と甘いもの」

HTTP_Request2 がリリースされました&簡単な使い方


バージョンがあがってインターフェイスが変わったので多分この記事の内容はもうあまり役に立たないような気がします.(2010-03-21 追記)

0.1.0-alphaです。

PHP5 的な、HTTP_Requestの後継にあたる位置づけのようです。
なんか昨日HTTP_Requestを使おうとおもってマニュアル見ようとしたら見つけました。びっくり。

主な違い

主な違いは多分以下のかんじです。

  • Adapterが選択できるようになった
    • 今のところ、Socket、cURL、Mock
    • Mockはテスト用に使える
  • インターフェースがちょっと使いやすくなった
  • 例外なげてくれるようになった
  • Net_URL2に依存

これまでのHTTP_Requestを知っている人は、若干使い方が違うので注意が必要です。まあ似たようなものですが。

使い方

サンプルコード

<?php

require_once 'HTTP/Request2.php';

try {
    // 引数以降省略可能だけど
    // あと config で proxy とか設定できる
    $request = new HTTP_Request2("http://nequal.jp", HTTP_Request2::METHOD_GET);
    $request->setHeader("user-agent", "Uhehehe! (PHP 5.2.6)");

    $response = $request->send();

    if ($response->getStatus() == 200) {
        $body = $response->getBody();

        // あと処理をうにゃうにゃと
        // $title = @simplexml_import_dom(DOMDocument::loadHTML($body))->xpath("//head/title");
        // echo $title[0];
    }
    else {
        throw new Exception ("Server returned status: " .  $response->getStatus());
    }
}
catch (HTTP_Request2_Exception $e) {
    echo $e->getMessage();
}
catch (Exception $e) {
    echo $e->getMessage();
}

まとめ

HTT_Requestよりは良いかも。なにせ例外投げてくれるので、いちいち PEAR::isError とかやらなくてよいところが良いなあ。あと、sendの戻り値がResponseオブジェクトってのも直感的で良いですね。

HTTP_Requestに変わるデファクトになっていくのかな〜?

でもGETのクエリパラメーターを追加するのはどうするんだろうなあ。addQueryStringに該当するものがなくて結局自分でパラメータくみたてて setUrl してしまったんだけど。あれれ。





・・・にしても、また、「2」ってねー :p