cURL で JSON データを取得/更新する

file_get_contents よりもパフォーマンスが良い cURL を使う。

cURL の使い方

PHP を cURL サポート機能付きでコンパイルすると、 curl 関数を使用可能となる。

1. curl_init() により cURL セッションを初期化
2. curl_setopt() により転送時のオプションを設定
3. curl_exec() により転送を実行
4. curl_close() によりセッションを終了

参照►基本的な curl の使用法

 

【 サンプルコード 】
※ cURL で JSON データを取得/更新

    try{

        // セッションを初期化
        $ch = curl_init();

        // 転送時のオプションを設定
       if($request == "POST"){	                       
           $param_arr = http_build_query($param_arr); 	
           curl_setopt($ch, CURLOPT_POST, TRUE);		
           curl_setopt($ch, CURLOPT_POSTFIELDS, $param_arr);

    	}else{        	
           curl_setopt($ch, CURLOPT_CUSTOMREQUEST,  "DELETE" );
    	}
        curl_setopt($ch, CURLOPT_URL, $access_url);
        curl_setopt ($ch, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
       
        // 転送を実行
        $strResponse = curl_exec($ch); 
 
        // エラー番号を取得  
        $curlErrno = curl_errno($ch);  
        if($curlErrno){
            $curlError = curl_error($ch);
            throw new Exception($curlError);
        }
        
        // セッションを終了
        curl_close($ch);
       
        // JSON 文字列をデコード
        $result = json_decode($strResponse, true); 

        $arr = array(
                'code' => $result["meta"]["code"],
                'ret_data' => $result["data"] );

        // 文字列をエンコード
        $encode = json_encode($arr);

        header("Content-Type:text/javascript; charset=utf-8");// for debug
        echo $encode;
        exit;

    } catch (Exception $e) {
        echo "Exception-".$e->getMessage();
    }

※今回(Instagram API)は、データの更新(DELETE)に CURLOPT_CUSTOMREQUEST というカスタムメソッドを使用。

CURLOPT_CUSTOMREQUEST ….. HTTP リクエストで “GET” あるいは “HEAD” 以外に 使用するカスタムメソッド。
これが有用なのは、”DELETE” やその他のあまり知られていない HTTP リクエストを実行する場合です。

参照 ► curl_setopt (転送用オプション)について