我目前正在使用AWS Lambda进行Alexa技能工作,除了一件事情以外,所有工作都很完美。我似乎无法成功POST HTTP参数/自定义标头到我的服务器。它可以抓取信息完美,但我不明白为什么它不发送参数/自定义标题。无法使用自定义标头将HTTP POST发送到外部服务器
我对发送HTTP POST请求的代码如下所示:
function httpGetMall(latitude, longitude, callback) {
var options = {
host: 'myserver.com',
path: '/path/to/script.php',
auth: 'myAuthenticationPassword'.toString('base64'),
method: 'POST',
headers: {'latitude': latitude.toString(), 'longitude': longitude.toString()}
};
var req = http.request(options, (res) => {
var body = '';
res.on('data', (d) => {
body += d;
});
res.on('end', function() {
callback(body);
});
});
req.end();
req.on('error', (e) => {
});
}
我知道一个事实,该函数被调用正确的,因为它返回回调的数据完美。
在我的PHP脚本,我试图抓住像这样的价值观:
$latitude = $_POST['latitude'];
$longitude = $_POST['longitude'];
我已经手动尝试设置函数内部的纬度和经度,看看他们并没有获得通过的,但服务器仍然没有收到它们。
任何帮助将不胜感激。谢谢!
您是否意识到POST数据未在标头中发送。它作为身体中的编码字符串发送。这可能是PHP希望找到它的地方,但是您在node.js中创建POST请求时并未将数据放在正确的位置。 – jfriend00
@ jfriend00哦,我没有意识到这一点。我如何将数据作为身体中的编码字符串发送?我是NodeJS和网络的新手,很抱歉,如果我的术语不正确。 –
我已经向你展示了如何在答案中做到这一点。 – jfriend00