Silexで外部APIにHTTP Requestする

最近Silex始めました。

まずは外部のWebServerにリクエストを投げる方法です。軽量なWebClientであるBuzzを使います。gitでBuzz本体とProviderをダウンロードします。

$ cd vendor/
$ git clone https://github.com/kriswallsmith/Buzz.git Buzz
$ cd Buzz/
$ git checkout v0.5
$ git submodule update --init
$ cd ..
$ git clone https://github.com/marcw/silex-buzz-extension.git silex-buzz-extension

src/bootstrap.phpに追加します。

$app['autoloader']->registerNamespace('MarcW', __DIR__ . '/../vendor/silex-buzz-extension/lib');

$app->register(new MarcW\Silex\Provider\BuzzServiceProvider(), array(
    'buzz.options' => array(
    ),
    'buzz.class_path' => __DIR__ . '/../vendor/Buzz/lib',
));

これで準備完了です。あとはアプリケーションから

$app['buzz']->getClient()->setTimeout(30);
$response = $app['buzz']->get('http://www.google.co.jp');

echo $app['buzz']->getLastRequest()."\n";
echo $response;

として呼び出すことができます。Buzzのデフォルトのタイムアウトが5秒で、早すぎたので30秒に変更しておきました。


タグ: , ,

新しく会社作りました!

コメントをどうぞ