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

Javascript Node.js:从POST请求获取响应正文,javascript,node.js,Javascript,Node.js,在Node.js中提取POST请求的响应正文时遇到问题。我希望得到响应:“access_token=…” 应该很简单,但不确定我应该做什么。(节点v0.4.3) 这是我的代码片段 payload = 'client_id='+client_id + '&client_secret='+ client_secret + '&code='+ code var options = { host: 'g

在Node.js中提取POST请求的响应正文时遇到问题。我希望得到响应:“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");

您需要绑定到响应的
数据
事件侦听器。大概是这样的:

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

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

就你而言,mikeal的库非常适合这项任务。它等待响应的整个主体到达,然后调用您的回调,其形式为
(err,response,body)


对于解析请求体,您可能希望使用中间件(或流行的,它进一步扩展了Connect)。

请注意,数据可以分为几个块,如果我没有错的话,你必须倾听“结束”事件,以确保你有完整的回应主体。按照@GuidoGarcía所说的,这里有一个指向更全面答案的指针,显示了如何获得整个主体。