我想从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); }); })
编辑:将编码设置为 “二进制” 也不起作用
接受的答案对我不起作用(即,将编码设置为二进制),即使是询问该问题的用户提到它也不起作用。
这是对我有用的东西,摘自: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')); }); });
编辑: 根据分号的建议更新答案