我正在尝试将一些json发布到URL。我在stackoverflow上看到了有关此问题的其他各种问题,但似乎都不清楚或无法解决。这是我得到的结果,我在api docs上修改了示例:
var http = require('http');
var google = http.createClient(80, 'server');
var request = google.request('POST', '/get_stuff',
{'host': 'sever', 'content-type': 'application/json'});
request.write(JSON.stringify(some_json),encoding='utf8'); //possibly need to escape as well?
request.end();
request.on('response', function (response) {
console.log('STATUS: ' + response.statusCode);
console.log('HEADERS: ' + JSON.stringify(response.headers));
response.setEncoding('utf8');
response.on('data', function (chunk) {
console.log('BODY: ' + chunk);
});
});
当我将其发布到服务器时,出现错误,告诉我它不是json格式,或者不是utf8,应该是utf8。我尝试提取请求网址,但它为null。我只是从nodejs开始,所以请保持友好。
最佳答案
问题是您在错误的位置设置了Content-Type。它是请求 header 的一部分,它们在options对象(request()方法的第一个参数)中具有自己的键。这是使用ClientRequest()进行一次交易的实现(如果需要与同一服务器建立多个连接,则可以保留createClient()):
var http = require('http')
var body = JSON.stringify({
foo: "bar"
})
var request = new http.ClientRequest({
hostname: "SERVER_NAME",
port: 80,
path: "/get_stuff",
method: "POST",
headers: {
"Content-Type": "application/json",
"Content-Length": Buffer.byteLength(body)
}
})
request.end(body)
问题中的其余代码是正确的(request.on()及以下)。
关于javascript - 如何使用node.js发布到请求,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4505809/