Я не публикую сообщения в теле, и пары ключ / значение не отображаются нигде, когда я смотрел, когда делал сообщение curl из PHP - где они?!
Обновление:
Использование http_build_query ($ parameters) в записи curl сработало, поскольку они стали доступны в req.body, но кажется странным, что sinatra, play и другие инфраструктуры веб-API все обрабатывают опубликованный массив одинаково (без метода http_build_query), а express выглядит как сводный пасынок.Кто в праве?
В app.js есть конфиг:
app.use(express.bodyParser());
app.use(express.methodOverride());
Звонок:
app.post('/call/:genericUrlParam', function(req, res){
// where is 'key'/'value' pair?!
console.log('headers: ' + JSON.stringify(req.headers));
console.log('body: ' + JSON.stringify(req.body));
});
PHP выглядит так:
$parameters = array (
'key' => 'value'
);
$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, "localhost/call/myparam");
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 50);
curl_setopt($curl_handle, CURLOPT_USERPWD, "username:password");
curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_POST, 1);
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $parameters);
$buffer = curl_exec($curl_handle);
$error = curl_error($curl_handle);
curl_close($curl_handle);
if (empty($buffer)) {
return "Error: ".$error;
} else {
return $buffer;
}