phpでフォームを使わずに直接POST送信したら
「Content-type not specified assuming application/x-www-form-urlencoded」
というエラーが出たのでコードを修正した際のメモ。
これはデータ送信する際のheaderが足りない!という内容のエラーらしい。エラー前は↓のような感じでメソッドタイプとデータを渡してPOSTした。
$data =array( 'param1' => $param1, 'param2' => $param2 ); $data = http_build_query($data, "", "&"); $options =array( 'http' =>array( 'method' => 'POST', 'content' => $data ) ); $contents =file_get_contents($url, false, stream_context_create($options));
修正後は、$optionsの配列にヘッダーを設定。こうすることでエラーが無くなり無事送信完了。
$data =array( 'param1' => $param1, 'param2' => $param2 ); $data = http_build_query($data, "", "&"); $header = array( "Content-Type: application/x-www-form-urlencoded", "Content-Length: ".strlen($data) ); $options =array( 'http' =>array( 'method' => 'POST', 'header' => implode("\r\n", $header), 'content' => $data ) ); $contents =file_get_contents($url, false, stream_context_create($options));