以前こちらの URL で GET/POST を簡単にできるコードを書きましたが、問題があるとのことで多くの指摘を頂きました。zaru さんに正しいコードを書いて頂きましたので下記の記事をご覧ください。
下記にコードを引用させて頂きます。いくらか稼働させた所 curl の方が安定していることが分かりましたので、こちらを引用させて頂きます。curl がインストールできない環境等では zaru さんの記事の別のコードを使用してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | function wbsRequest2($method, $url, $params = array()) { $data = http_build_query($params); if($method == 'GET') { $url = ($data != '')?$url.'?'.$data:$url; } $ch = curl_init($url); if($method == 'POST'){ curl_setopt($ch,CURLOPT_POST,1); curl_setopt($ch,CURLOPT_POSTFIELDS,$data); } //curl_setopt($ch, CURLOPT_HEADER,true); //header情報も一緒に欲しい場合 curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_TIMEOUT, 2); $res = curl_exec($ch); //ステータスをチェック $respons = curl_getinfo($ch, CURLINFO_HTTP_CODE); if(preg_match("/^(404|403|500)$/",$respons)){ return false; } return $res; } |
hayajoさんのコメント
・$paramsの初期値をarray()に
・$content をNULLもしくは空文字で初期化
・METHODがGET|POST以外の場合の例外処理(もしくは不明なMETHODの場合はGETにする等)
を入れると使い勝手がよくなると思います。
tsuzukiさんのコメント
12行目は
$options['http']['content'] = $data;
ですね。
あと、私の環境ではパラメータがうまく渡せなかったので3行目も以下のように変えました。
$data = http_build_query($params, ”, ‘&’);
Knowledge base funcさんのコメント
PHPのPOST、GET用クラス
PHP で凄く簡単に GET/POST 送信ができる関数を作りました こんな記事がありました。こういうのはクラスにしておいたほうが後々使い勝手いいとおもいました。PHPよくわかんないけど。 常…
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…