node.jsのhttpclientとして使いやすいrequestモジュールですが、少しハマったのでメモしておきます。
何をやりたいかというと、単純にPOSTでどっかにデータを送りたいわけです。
受け口は今回はペライチのPHPプログラムです。
最初、こんな感じのコードを書いていました。
var request = require('request'); request.post({ uri: 'https://localhost/dump.php', body: 'hoge=foo&aaa=bbb' }); |
ただし、PHP側の$_POST変数には一向に入る気配がありません。
それを下記のように送信ヘッダのcontent-typeを明示的に指定してあげれば正常に受け取ることが出来ました。
var request = require('request'); request.post({ uri: 'https://localhost/dump.php', body: 'hoge=foo&aaa=bbb', headers: { 'content-type': 'application/x-www-form-urlencoded' } }); |
とりあえず、簡単にメモ。
追記:2011.11.13 12:38
PHPのソースを直接見たところ、POSTの場合、下記の二つのcontent-typeの場合のみ変数に格納しているようでした。
- application/x-www-form-urlencoded
- multipart/form-data