あちこち調整中。不具合はご容赦下さい。
8 6月
PHPを使ってPOSTリクエストを送信する方法としては
(ref. とても簡単にPHPからPOSTリクエストを送信する方法 – Programming Magic )
などがあるが、ここでは、環境の変更(ライブラリの追加やバージョンアップなど)が必要でない 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先から受け取ったレスポンスをそのままクライアントに渡すことができますよと。
あとはエラー時の対応を付け加えるとなお良さそう。
Leave a reply