[PHP] Webページではなく、サーバープログラムから直接POST送信する方法

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

HTMLでFORMタグを書いてSUBMITするのが本来のデータ送信方法なのだが、
最近は非同期やらWebSocketやらでサーバーサイドからデータをPOST送信する場面が増えてきた。

使う場面

  1. サーバーでBOTを作っている時など、定期的なバッチ処理で特定のサービスに対してOAuth認証を行う場合など
    PHPプログラムをCLIで起動してそのまま直接POSTする場合。
  2. サーバー間の通信処理を自動で行う場合など、PHPのheader関数でURLをGETでたたくだけでは、物足りない場合。
  3. コマンドラインでサーバーにあるファイルを別サーバーに送信する。

サンプル

Googleの検索をPOSTしているだけですが、urlやクエリ内容を適時変更してお使いください。

send.php

実行

スクリーンショット 2015-10-13 7.07.24

解説

「http_build_query」関数は、連想配列をクエリ形式に変換してくれる便利な関数です。
URLを「file_get_contents」でURLアクセスすることで、POST送信を実現しています。

このやり方を発展させると、ファイル送信も可能になります。

ファイル送信をする場合

こんな感じで、クエリに追記セットします。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です