A4 WORKS Official BLOG

A4 WORKS オフィシャルブログ

PHP

file_get_contensでPOSTリクエスト

投稿日:2014年10月17日 更新日:

file_get_contensでファイルパスの代わりにURLを指定することで、手軽かつ簡易に外部のサイトからソースを取得することができ、WebAPIからデータを取得するなどに重宝します。
ただ、PHPの日本語マニュアルで翻訳されてる範囲だけみるとGETの説明しかなく何となくPOSTできないのかも。といった雰囲気を醸し出しています。
http://php.net/manual/ja/function.file-get-contents.php
説明、パラメータ・・・・例、変更履歴、注意、参考のもう一段下のUser Contributed Notesをみると
‘method’  => ‘POST’,
と記述があります。
stream_context_createと合わせて使うことでfile_get_contensでもPOSTリクエストを送ることができレスポンスボディを取得できます。
curlを使う方法など他にも方法があるのですが、わりと手軽なのでfile_get_contensは個人的によく使います。
https://gist.github.com/akifumi-kamata/7dbe50185333baf2d882
リクエストに失敗した場合はfalseが返ります。
PHPのマニュアルにあるとおり、相手先のサーバーがIISだとPHPがエラーを返す場合があるらしいので、@付けエラー表示を抑制するなどの対応も行います。
リクエスト先がWebAPIなどで、HTTPのレスポンスコードが事後の処理に影響を及ぼす場合には、$http_response_header を合わせて使用します。
file_get_contensでリクエストを行うと$http_response_headerにレスポンスコードが格納されるので、内容を適宜チェックし、事後の処理を行う事ができます。
安易に対応するならこんな感じです。

$result = file_get_contens($url);
if($http_response_header[0] == "HTTP/1.1 200 OK"){
    echo "200 OK!";
}

環境によってcurlが使えないとかあれば file_get_contens の事を思い出して頂ければと。

-PHP

執筆者:

関連記事

memcachedのインストールとPHPの対応

AWSのサーバーにmemcachedをインストールしたので備忘録。 memcachedのインストール # yum install memcached 起動します。 # service memcache …

FuelPHPを使ってみる

ゲーム開発プロジェクトのサーバー側(アプリと連携させるAPIとか管理機能とか)をどうするか検討していたんですがFuelPHPが良さそうなので、導入してみました。 http://fuelphp.jp/ …

イベントで使えるスマホ対応4択クイズシステムを作ってみた

忘年会等のイベントでつかえる4択クイズシステムをつくってみました。 最初に。 仕事の合間に超短納期でつくった為、いろいろ突っ込みどころのある仕上がりとなっております。予めご了承ください。 動作環境等々 …

FuelPHPでSmartyを使う

以前のエントリ「FuelPHPを使ってみる」の続きです。 Twigを導入するか迷ったんですが、今回はなじみがあるのでSmartyを採用(導入)します。 最初に。 バージョン1.7.2でのセットアップ方 …

PHPでAPCを有効にするとclass not foundになる現象

最近はLINEスタンプのネタばかりだったので、久々の技術ネタです。 4年ほど前に作ったシステム(ソーシャルゲーム)を訳あってAWS環境で再構築したところ、APCを有効にするとそれまで普通に動いていたシ …