Node.js:从POST请求获取响应正文

我在提取Node.js.中的POST请求的响应正文时遇到了问题,期待RESPONSE:'access_token = …'

应该很简单,不知道我该怎么做。 (节点v0.4.3)

这是我的代码片段。

payload = 'client_id='+client_id + '&client_secret='+ client_secret + '&code='+ code var options = { host: 'github.com', path: '/login/oauth/access_token?', method: 'POST' }; var access_req = https.request(options, function(response){ response.on('error', function(err){ console.log("Error: " + err); }); // response.body is undefined console.log(response.statusCode); }); access_req.write(payload); access_req.end(); console.log("Sent the payload " + payload + "\n"); res.send("(Hopefully) Posted access exchange to github"); 

您需要绑定到响应的data事件侦听器。 像这样的东西:

 var access_req = https.request(options, function(response){ response.on('data', function(chunk) { console.log("Body chunk: " + chunk); }); }); 

正如Miikka所说,在Node.js中获取响应主体的唯一方法是绑定事件并等待身体的每个块到达。 没有response.body属性。 http / https模块是非常低级的; 对于几乎所有的应用程序来说,使用更高级别的包装库会更有意义。

就你而言,mikeal的请求库非常适合这个任务。 它会一直等到响应全部到达,然后调用你的callback(err, response, body)

为了parsing请求体,你可能希望使用Connect与bodyParser中间件(或stream行的Express ,这进一步扩展了Connect)。