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

執筆者:

関連記事

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

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

FuelPHPをPHP7.2に対応させる

php oil g model {以下省略} をすると下記のエラーがでました。 Uncaught exception Fuel\Core\PhpErrorException: 2 – Il …

no image

PHPの名前空間を実際に使ってみた。

A4 WORKS 新人の池田です。 “ブログを書くことで学べる事も多くある”という教えのもと、ブログ初挑戦です。 読みにくい部分も多分にあるかとは思いますが最後までおつきあい頂 …

FuelPHPでSmartyを使う

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

Google Developers PageSpeed Insightsを活用してパフォーマンスチューニング

PageSpeed Insightsのトップページに書いてあるんですが「あらゆる端末でウェブページの読み込み時間を短くしましょう。」との事。 読み込みが早い方が良いのはもちろんその通りで、問題はどうや …