Drupal 7 で POST リクエストのデータが送信できない問題の解決方法
問題
Drupal 7 の HTTP リクエスト用の関数 drupal_http_request()
を使って POST リクエストをしようとしても POST データが送れない。
$result = drupal_http_request($url = 'http://example.com', $options = array(
'method' => 'POST',
'data' => 'aa=b',
));
原因
ヘッダが正しく設定されていないことが原因です。
method
と data
だけでなく header の Content-Type
を正しく設定する必要があります。
解決方法
以下のとおりに headers メンバを作って Content Type を渡せば OK です。
$result = drupal_http_request($url = 'http://example.com', $options = array(
'method' => 'POST',
'data' => 'aa=b',
'headers' => array(
'Content-Type' => 'application/x-www-form-urlencoded',
),
));
これが仕様なのかバグなのかハッキリとはわかりません。