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

时间:2011-03-20 06:31:47

标签: javascript node.js

我在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");

2 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:7)

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

在您的情况下,迈克尔的request库完全适合这项任务。它等待响应的完整主体到达,然后调用(err, response, body)形式的回调。

对于解析请求正文,您可能希望将ConnectbodyParser中间件(或流行的Express一起使用,这进一步扩展了Connect)。