PHPのhttpクライアントguzzleでWebサービスにログインする

guzzleはPHPのhttpクライアントです。
composerでインストールできるので手軽に使うことができる点が魅力です。

今回はこのguzzleを使ってWebサービスにログインしてみます。

$client = new \GuzzleHttp\Client([
    'base_uri' => 'https://sample.com/',
    'timeout' => 30.0,
    'cookies' => true  //ログイン時のcookie情報を保持
]);

try {
    $response = $client->post('login', [
        'form_params' => [
            'username' => 'user',
            'password' => 'password'
        ]
    ]);
} catch (\GuzzleHttp\Exception\TransferException $e) {
    //例外処理
}
//この後$client->getなどとすればログインした状態のままリクエストを送信できる

上記がhttps://sample.com/loginに対してログイン情報をpostで投げるコードになります。
Clientクラスのインスタンス生成時にcookiesをtrueにすれば、ログイン状態を保持できます。
catch (\GuzzleHttp\Exception\TransferException $e)とすることでリクエスト送信時に発生し得る全ての例外をキャッチできます。