一尘不染

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

node.js

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

我发现了一个使用请求方法的 类似问题 ,即使用request
在Node.js中获取二进制内容,是说将 编码 设置为 null 应该可以,但是不能。

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

编辑:将编码设置为 “二进制” 也不起作用


阅读 329

收藏
2020-07-07

共1个答案

一尘不染

接受的答案对我不起作用(即,将编码设置为二进制),即使是询问该问题的用户提到它也不起作用。

这是对我有用的东西,摘自:http :
//chad.pantherdev.com/node-js-binary-http-
streams/

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

编辑: 根据分号的建议更新答案

2020-07-07