来自http.get请求的奇怪输出?

我试图做一个简单的http请求,遵循redirect:

http.get('http://www.example.com/', function(res){ var data = []; res.on('data', function(chunk){ data.push(chunk) }).on('end', function(){ var buffer = Buffer.concat(data); // console.log(buffer.toString('base64')) //This outputs random string console.log(buffer) }) }) 

我得到的这个回应是:

 <Buffer 3c 21 44 4f 43 54 59 50 45 20 68 74 6d 6c 3e 0a 3c 68 74 6d 6c 3e 0a 3c 68 65 61 64 3e 0a 20 20 20 20 3c 6d 65 74 61 20 68 74 74 70 2d 65 71 75 69 76 ... > 

我也试图通过添加JSONparsing:

 var parsedData = JSON.parse(data); console.log(parsedData) 

这个错误是由于<符号没有被json-parse模块处理。

res.statusCode正在输出200

我不确定这是一个编码错误还是请求未能遵循redirect? 这看起来不像hex编码。

有没有其他人看过这个?

这里发生的是你将响应数据parsing为二进制数据(Buffer)并将二进制数据推送到一个数组。 您在控制台中看到的二进制对象实际上是预期的行为:)

如果你想要一个JSON响应,你需要将数据缓冲区附加到一个string,然后parsing它:

 http.get('http://echo.jsontest.com/key/value/one/two', function(res){ var data = ''; res.on('data', function(chunk){ data += chunk; }).on('end', function(){ var json = JSON.parse(data); console.log(json); }); }); 

现在我们已经知道了,请看看请求 – 它使得API调用比本地HTTP模块更容易;)