如何使用http.request在node.js中获取二进制内容?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (308)

我想从https请求中检索二进制数据。

我找到了一个相似问题使用请求方法,使用请求获取Node.js中的二进制内容

options = {
hostname: urloptions.hostname,
path: urloptions.path,
method: 'GET',
rejectUnauthorized: false,
encoding: null
};

req = https.request(options, function(res) {
var data;
data = "";
res.on('data', function(chunk) {
    return data += chunk;
});
res.on('end', function() {
    return loadFile(data);
});
res.on('error', function(err) {
    console.log("Error during HTTP request");
    console.log(err.message);
});
})
提问于
用户回答回答于

以下是我的解答

http.get(url.parse('http://myserver.com:9999/package'), function(res) {
    var data = [];

    res.on('data', function(chunk) {
        data.push(chunk);
    }).on('end', function() {
        //at this point data is an array of Buffers
        //so Buffer.concat() can make us a new Buffer
        //of all of them together
        var buffer = Buffer.concat(data);
        console.log(buffer.toString('base64'));
    });
});
用户回答回答于

你需要将编码设置为响应,而不是请求:

req = https.request(options, function(res) {
    res.setEncoding('binary');

    var data = [ ];

    res.on('data', function(chunk) {
        data.push(chunk);
    });
    res.on('end', function() {
        var binary = Buffer.concat(data);
        // binary is your data
    });
    res.on('error', function(err) {
        console.log("Error during HTTP request");
        console.log(err.message);
    });
});

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动