无法从Node.js中的http响应中读取缓冲区数据

时间:2014-03-14 21:20:04

标签: node.js httprequest httpresponse

我有一个节点代理服务器,我在其中传递来自另一台服务器的响应。它正在返回xml。结果XML使它成为浏览器但是当试图拦截proxyResponse.on事件中的响应时,我似乎无法解析数据。尝试使用chunk.toString()会导致文本无法读取。

            // Handle proxy response data
            proxyResponse.on (
                'data',
                function ( chunk ){

                    if ( debugging ){
                        console.log ( '  < chunk = %d bytes', chunk.length );
                    }
                    xml += chunk.toString();
                    response.write ( chunk, 'utf8');    

                    console.log('Response: '+ xml);
                }
            );

1 个答案:

答案 0 :(得分:0)

http标头是导致我的解决方案的线索。这个块被Gzip压缩,所以我使用Zlib库解压缩块以获取内部的xml。

var zlib = require('zlib');
// Handle proxy response data
proxyResponse.on (
   'data',
   function ( chunk ){

       if ( debugging ){
           console.log ( '  < chunk = %d bytes', chunk.length );
   }
   xml += chunk;
   response.write ( chunk );    
   zlib.unzip(chunk, function(err, chunk){
   if (!err){
       console.log('Response'+chunk.toString())
   }
   });
});