PHP で凄く簡単に GET/POST 送信ができる関数を作りました

良く PHP で API を叩くようになりました。ついでに私が愛用している関数を公開しておきます。PHP でこんなことできることを知らなかったと思う人は勉強に、知ってるけど叩くの面倒だと思っていた人はぜひお使いください。何か改善点などありましたら是非コメントでお知らせください。

適当な記事を書いてホットエントリに入れてしまい大変ご迷惑をおかけしました。皆様からの改善提案をコードに反映する時間がないため、皆様からのアドバイスを追記させて頂くことでお許し頂ければと存じます。申し訳ありませんでした。

追記: GET/POST の決定版を書いてもらいました

私の尊敬する zaru さんがウェブル@soraiyさんのPHP で凄く簡単に GET/POST 送信ができる関数を勝手に改良した | zaru blogという物凄い記事を書いてくださったので、ぜひ皆さんも御覧ください。

追記: curl を使えばもっと簡単

@soraiy ぬあん。curl使えばPOSTも出来るし、タイムアウトコントロールも出来るので、是非ブラッシュアップしてみてください。Tue Mar 08 05:36:02 via web

追記: ヘッダ取る方法

@soraiy $http_response_headerで直前のfile_get_contentsのヘッダ取れるよ。僕はHogeRequest/HogeResponseってクラスにラップして使ってる。Tue Mar 08 05:42:19 via Echofon

追記: file_get_contentsの謎仕様周り

@soraiy file_get_contentsを軸にしても,作り込めばAPIを叩けないわけではないのでドンマイ.file_get_contentsの謎仕様周りを調べたことがあるので,よかったら参考にしてください.( ´-`)っ http://bit.ly/hyzMmFTue Mar 08 05:38:07 via Echofon

使い方

第一引数には 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;
}

コメント

  1. hayajoさんのコメント

    ・$paramsの初期値をarray()に
    ・$content をNULLもしくは空文字で初期化
    ・METHODがGET|POST以外の場合の例外処理(もしくは不明なMETHODの場合はGETにする等)

    を入れると使い勝手がよくなると思います。

  2. tsuzukiさんのコメント

    12行目は
    $options['http']['content'] = $data;
    ですね。

    あと、私の環境ではパラメータがうまく渡せなかったので3行目も以下のように変えました。
    $data = http_build_query($params, ”, ‘&’);

  3. Knowledge base funcさんのコメント

    PHPのPOST、GET用クラス

    PHP で凄く簡単に GET/POST 送信ができる関数を作りました こんな記事がありました。こういうのはクラスにしておいたほうが後々使い勝手いいとおもいました。PHPよくわかんないけど。 常…

  4. blog.udzura.jpさんのコメント

    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…

この記事にコメントする

Trackback URL