尝试通过nodeJS-Request通过我的网站提交JSON对象。
var options = {
uri: 'http://localhost/test.php',
method: 'POST',
json: {
"longUrl": "http://www.google.com/"
}
};
request(options, function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body)
}
});
在我的test.php脚本上,我只是通过json_encode在调试文件中写入$ _REQUEST变量:
<?php
file_put_contents('test.debug.txt', "TEST: " . json_encode($_REQUEST) . json_encode($_POST));
显然,$ _ POST不包含任何内容。作为第一个调试步骤,我在URL中编写了参数,以检查PHP脚本是否正常工作:
var options = {
uri: 'http://localhost/test.php?debug=1',
method: 'POST',
json: {
"longUrl": "http://www.google.com/"
}
};
request(options, function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body)
}
});
这个附加的debug=1
做到了,因此我可以在调试文件中看到{'debug':1}作为输出。所以我现在的问题是:POST变量发生了什么?
NodeJS请求的输出:
0|server | request:
0|server | Request {
0|server | _events:
0|server | [Object: null prototype] {
0|server | error: [Function: bound ],
0|server | complete: [Function: bound ],
0|server | pipe: [Function],
0|server | data: [Function],
0|server | end: [Function] },
0|server | _eventsCount: 5,
0|server | _maxListeners: undefined,
0|server | method: 'POST',
0|server | body:
0|server | '{"longUrl":""http://www.google.com/"}',
答案 0 :(得分:1)
如果您使用的是npm request
包,则发布json的正确方法是(doc):
options = {
uri: 'http://localhost/test.php',
method: 'POST',
body: JSON.stringify({
"longUrl": "http://www.google.com/"
}),
json: true
}
更新:
尝试以此发送为application/x-www-form-urlencoded
options = {
uri: 'http://localhost/test.php',
method: 'POST',
form: {
"longUrl": "http://www.google.com/"
}
}