PHP:POSTリクエストを送信する

PHPによるPOSTリクエストを送信する方法としては
などがあるが、ここでは、環境の変更(ライブラリの追加やバージョンアップなど)が必要でない fsockopen 関数を使う方法を参考にする。

ただし参照元のコードのままでは、POST先からのレスポンスをPHPの出力として(200 OK で)クライアントに渡すため、POST先でエラーだったりリダイレクトされていたりの場合に困ったことになる。そこで、

/* ヘッダ部分とボディ部分を分離 */
$DATA = split("\\r\\n\\r\\n", $response, 2);

の後ろに、以下のコードを挿入。

/* ヘッダを出力 */
/* これより前に出力が無いよう(空白・空行など)注意! */
$headers = explode("\\n", $DATA[0]);
foreach( $headers as $header ){
header($header);
}

これにより、POST先から受け取ったレスポンスをそのままクライアントに渡すことができるようになる。
あとはエラー時の対応を付け加えるとなお良い。

リファレンス

Artikel Terkait