gpt4 book ai didi

node.js - http.get 请求的特殊输出?

转载 作者:可可西里 更新时间:2023-11-01 17:06:06 25 4
gpt4 key购买 nike

我正在尝试发出一个跟随重定向的简单 http 请求:

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 ... >

我还尝试通过添加 JSON 解析它:

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

此错误是由于 <符号未被 json-parse 模块处理。

res.statusCode正在输出 200 .

我不确定这是编码错误还是请求未能遵循重定向?这看起来不像十六进制编码。

有没有人以前见过这个?

最佳答案

这里发生的是您将响应数据解析为二进制数据(缓冲区)并将二进制数据推送到数组。您在控制台中看到的二进制对象实际上是预期的行为:)

如果你想要一个 JSON 响应,你需要将数据缓冲区附加到一个字符串,然后解析它:

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);
});
});

现在我们已经解决了这个问题,看看 request — 它使 API 调用比本地 HTTP 模块更容易;)

关于node.js - http.get 请求的特殊输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42143902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com