良く PHP で API を叩くようになりました。ついでに私が愛用している関数を公開しておきます。PHP でこんなことできることを知らなかったと思う人は勉強に、知ってるけど叩くの面倒だと思っていた人はぜひお使いください。何か改善点などありましたら是非コメントでお知らせください。
適当な記事を書いてホットエントリに入れてしまい大変ご迷惑をおかけしました。皆様からの改善提案をコードに反映する時間がないため、皆様からのアドバイスを追記させて頂くことでお許し頂ければと存じます。申し訳ありませんでした。
追記: GET/POST の決定版を書いてもらいました
私の尊敬する zaru さんがウェブル@soraiyさんのPHP で凄く簡単に GET/POST 送信ができる関数を勝手に改良した | zaru blogという物凄い記事を書いてくださったので、ぜひ皆さんも御覧ください。
追記: curl を使えばもっと簡単
@soraiy ぬあん。curl使えばPOSTも出来るし、タイムアウトコントロールも出来るので、是非ブラッシュアップしてみてください。
追記: ヘッダ取る方法
@soraiy $http_response_headerで直前のfile_get_contentsのヘッダ取れるよ。僕はHogeRequest/HogeResponseってクラスにラップして使ってる。
追記: file_get_contentsの謎仕様周り
@soraiy file_get_contentsを軸にしても,作り込めばAPIを叩けないわけではないのでドンマイ.file_get_contentsの謎仕様周りを調べたことがあるので,よかったら参考にしてください.( ´-`)っ http://bit.ly/hyzMmF
使い方
第一引数には GET なのか POST なのかを入れます。第二引数には送信先の URL を入れます。第三引数には配列で送信したい値を渡します。
GET 送信
1 | echo wbsRequest('GET', 'http://weble.org/', Array('s' => 'PHP')); |
POST 送信
1 | echo wbsRequest('POST', 'http://caloreen.com/search/', Array('keyword' => 'パン')); |
コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | function wbsRequest($method, $url, $params) { $data = http_build_query($params); $header = Array("Content-Type: application/x-www-form-urlencoded"); $options = array('http' => Array( 'method' => $method, 'header' => implode("\r\n", $header), )); if($method == 'GET') { $content = file_get_contents($url . '?' . $data, false, stream_context_create($options)); } else if($method == 'POST') { $options['content'] = $data; $content = file_get_contents($url, false, stream_context_create($options)); } return $content; } |






















・$paramsの初期値をarray()に
・$content をNULLもしくは空文字で初期化
・METHODがGET|POST以外の場合の例外処理(もしくは不明なMETHODの場合はGETにする等)
を入れると使い勝手がよくなると思います。
12行目は
$options['http']['content'] = $data;
ですね。
あと、私の環境ではパラメータがうまく渡せなかったので3行目も以下のように変えました。
$data = http_build_query($params, ”, ‘&’);
PHPのPOST、GET用クラス
PHP で凄く簡単に GET/POST 送信ができる関数を作りました こんな記事がありました。こういうのはクラスにしておいたほうが後々使い勝手いいとおもいました。PHPよくわかんないけど。 常…
Ruby で凄く簡単に GET/POST 送信ができる関数を作りました
Time to Read 30秒 Time to Write 30秒 使い方 (ry 1 p wbs_request(:GET, ‘http://blog.udzura.jp/’, :s => ‘Ruby’) 1 p wbs_request(:POST, ‘http://www.google.com/’, :q => ‘Ruby’) コード 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1…