プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
PHP、GoogleのCustom Search APIを使ってみる(4):エラー処理を追加してみる
GoogleのCustom Search APIを使ってみる(3):最低限の動作を確認できるPHPのサンプルプログラム」の続きです。

今回はエラー処理を追加してみますね。
Google APIからの戻りを判定します。

ということで、いきなりですが、サンプルですφ(--)

<?php

//------------------------------------
// 定数設定
//------------------------------------
//APIキー
$apiKey = "【取得したAPIキー】";

//検索エンジンID
$searchEngineId = "【取得した検索エンジンID】";

// 検索用URL
$baseUrl = "https://www.googleapis.com/customsearch/v1?";

//取得開始位置
$startNum = 1;

try {
    //--------------------------
    // 検索キーワード取得
    //--------------------------
    //$query = $_POST['q'];
    //$query = $_GET['q'];
    $query = "PHP site:piyopiyocs.blog115.fc2.com";

    //------------------------------------
    // リクエストパラメータ生成
    //------------------------------------
    $paramAry = array(
                    'q' => $query,
                    'key' => $apiKey,
                    'cx' => $searchEngineId,
                    'alt' => 'json',
                    'start' => $startNum
            );
    $param = http_build_query($paramAry);

    //------------------------------------
    // 実行&結果取得
    //------------------------------------
    $reqUrl = $baseUrl . $param;
    $retJson = @file_get_contents($reqUrl, true);
    if($retJson === false){
        throw new Exception("取得失敗!:" . $http_response_header[0]);
    }


    $ret = json_decode($retJson, true);

    //------------------------------------
    // 結果表示
    //------------------------------------

    //画面表示
    //var_dump($ret);

    //JSON形式でファイル出力
    file_put_contents(dirname(__FILE__) . "/data/ret_" . $startNum . "_" . date('Ymd_His') . ".txt", $retJson);

    //項目を画面表示
    $num = $startNum;
    foreach($ret['items'] as $value){
        echo "順位:" . $num . "<br>\n";
        echo "タイトル:" . $value['title'] . "<br>\n";
        echo "URL:" . $value['link'] . "<br>\n";
        echo "-------------------------------------------------------------------------<br>\n";

        $num++;
    }
} catch (Exception $e) {
    print "エラー:" . $e->getMessage();
}

例えば、APIキーの値を適当な値にして実行すると
こんな結果になりますφ(--)

エラー:取得失敗!:HTTP/1.0 400 Bad Request

それでは、追加した処理の説明ですが、基本は

1.処理部分をtry ~ catchで囲む
2.file_get_contents()の戻りを判定
3.「2.」の結果がfalseだったらExceptionを投げる

です。

$retJson = @file_get_contents($reqUrl, true);
if($retJson === false){
    throw new Exception("取得失敗!:" . $http_response_header[0]);
}

の部分が2、3に該当します。

まず、file_get_contents()の前に「@」がくっついていますよね。
これをくっつけておかないと、取得失敗時にWarningが発生します。

あとは、戻りを判定してExceptionを飛ばしているだけです。
file_get_contents()は、取得に失敗すると、falseが返ってきます。
また、HTTPレスポンスヘッダの内容が配列「$http_response_header」に入ります。

ここら辺の詳細は

PHP、file_get_contents()関数で引数にURLを指定した際の、HTTPステータスコードを取得する

で書きました。
間に合わせですが、$http_response_headerからHTTPステータスコードを抜き出す処理も書いてあります。
気が向いた方は読んであげてください。

最低限ではありますが、エラー処理はこんなもんで良いんじゃないですかね。
Custom Search APIからの戻りの判定さえ行っておけば、大怪我はしないと思います。
お疲れ様でした\(--)/

■目次
GoogleのCustom Search APIを使ってみる(1):事前準備1、APIキーを取得する
GoogleのCustom Search APIを使ってみる(2):事前準備2、検索エンジンの設定をする
GoogleのCustom Search APIを使ってみる(3):最低限の動作を確認できるPHPのサンプルプログラム
・GoogleのCustom Search APIを使ってみる(4):エラー処理を追加してみる
GoogleのCustom Search APIを使ってみる(5):検索結果を100件取得する
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● PHP  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト 

  関連記事