目次
1.環境
- Mac macOS Sierra
- Vagrant1.9.3(CentOS 7.1)
- PHP5.4
- Fuelphp1.7.3
2.サンプルコード
/**
* APIリクエストを行い結果を配列で受け取る
*
* @method sendApi
* @param [type] $url [description]
* @param [type] $request_param [description]
* @param [type] $option [description]
* @return [type] [description]
*/
public static function sendApi($url, $request_param, $options=null)
{
$result = null;
Log::debug($url);
Log::debug(var_export($request_param, true));
if (!empty($url))
{
$curl = curl_init(); //①
if($options != null)
{
curl_setopt_array($curl, $options); //②
}
$result = curl_exec($curl); //③
$getInfo = curl_getinfo($curl); //④
$errno = curl_errno($curl); //⑤
Log::debug("★Error Number : ".$errno);
if(CURLE_OK == $errno)
{
//ヘッダサイズ除去
$result = substr($result, $getInfo["header_size"]); //⑥
Log::debug(var_export($result, true));
} else {
$result = null;
}
curl_close($curl);
//Json形式から配列に変換
//$result = json_decode($body, true);
}
return $result;
}
3.解説
3-1. curl_init()
セッションを初期化する。
これは、必ず最初に行う。その戻り値として受け取ったセッションをパラメータに渡して以降の関数を呼び出す。
② curl_setopt_array($curl, $options)
curlでHTTPリクエストする際に付与するヘッダー情報やリクエストURL、リクエストパラメータなどを設定する。
上記の関数は配列でまとめて渡す場合の関数
ここに渡す場合は、curl_setoptを使用する。
③ curl_exec($curl)
HTTPリクエストを実行する。
④ curl_getinfo($curl)
リクエストした結果情報を受け取る。
この中にレスポンスボディも入っているので、その部分を取得することでリクエスト結果が取得できる。
抜き出し方は⑥を参照
⑤ curl_errno($curl)
リクエストの結果ステータスを取得することができる。
エラーが発生した場合はエラー情報なども取得が可能。
本ソースコードでは、これをチェックしてOKならばレスポンスボディの値を取得する処理を実装している。
4.補足
以下はCurlOptionの参考までに
※詳しくはPHPリファレンスを参照
$curl_opt = array(
CURLOPT_URL => $url,
CURLOPT_POSTFIELDS => http_build_query($request_param),
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_HEADER => TRUE,
CURLOPT_POST => TRUE,
CURLOPT_SSL_VERIFYPEER => FALSE,
CURLOPT_HTTPHEADER => $header
);