2013年08月26日

[Web] AWSを使ってみる APHPでPOSTして外部APIを使ってみた

EC2のインスタンスを立ち上げて、無事Webサイト(index.html)が表示されました。
次は、PHPを使ってみます。

ここでの流れは、この通り。

@PHPから外部APIを呼ぶ
A返ってきた値(JSON)をパースする
B欲しいデータを表示する



@PHPから外部APIを呼ぶ
細かい説明は抜きにして、コードです。
※[]で囲った部分は適宜書き換える必要があります
===========================================
<?php

// 外部APIのURLを指定
$url = '[APIのURL]';

// おまじない
$data = array(
'pattern' => 'htmlspe',
'show' => 'quickref',
);

// おまじない
$headers = array(
'Content-Type: application/x-www-form-urlencoded',
'Content-Length: '.strlen(http_build_query($data))
);

// 外部APIにはPOSTするので!
$options = array('http' => array(
'method' => 'POST',
'content' => http_build_query($data),
'header' => implode("\r\n", $headers),
));

// $json に外部APIの結果が保存される
$json = file_get_contents($url, false, stream_context_create($options));
===========================================
ここで、
print $json;
とすると、返ってきた中身が確認できます。

【参考】
とても簡単にPHPからPOSTリクエストを送信する方法【PHP】


A返ってきた値(JSON)をパースする
B欲しいデータを表示する

外部APIの返り値がJSONの場合、欲しい値を取得するにはパースする必要があります。
===========================================
// @の続き
// JSONをデコードして配列に入れる
$obj = json_decode($json, true);

// foreachで辿りながら欲しい情報を取得する
// JSONの階層が4つまである場合
foreach ($obj as $key => $value) {
// 第1階層
echo "$key -> $value";
foreach($value as $key => $value) {
// 第2階層
echo "$key -> $value";
foreach($value as $key => $value) {
// 第3階層
echo "$key -> $value";
foreach($value as $key => $value) {
// 第4階層
echo "$key -> $value";
}
}
}
}

?>
===========================================
PHPには json_decode() といった便利な関数があるのですね。
デコードした後は、欲しい情報がある階層まで掘り下げて検索していきます。

【参考】
twitterの検索結果をphpでjson使って表示する【たった7行】

ちなみに、JSONはそのままだと文字が並んでいて読みにくいので、
こちらの整形サービスを利用することをオススメします。

JSON整形サービス

よーし、次だー。
posted by be-style at 19:34| Comment(0) | Web
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

※ブログオーナーが承認したコメントのみ表示されます。