我想从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'));
});
});
编辑: 根据分号的建议更新答案
问题内容: 我正在尝试使用进行二进制数据处理,结果如下: 但是总是与预期有几个字节的差异。经过进一步调查,我发现假定为字符串,并替换了所有非Unicode字节。 我试图添加 ,但没有帮助。 如何获取二进制数据? 问题答案: 好吧,经过大量的挖掘,我发现应该有: 然后将是类型,而不是默认类型string。
问题内容: 因此,在这段(简化的)代码中,当有人点击我的节点服务器时,我向另一个网站发出GET请求,并将HTML页面标题打印到控制台。工作良好: 但是,在实际应用中,用户可以指定要命中的URL。这意味着我的节点服务器可能正在下载20GB的电影文件或其他文件。不好。content- length报头没有被用来停止它,因为它并不是所有服务器都传输的。然后问题是: 我如何告诉它在收到第一个10KB之后停
问题内容: 我建立了一个HTTP服务器。我正在使用下面的代码来获取请求URL,但未获取完整URL。 我只得到和。 我想获得完整的客户端请求的URL作为或。 谢谢。 问题答案: 从net / http包的文档中: 您的代码的修改后的版本: 输出示例:
要安装 Ceph 及其依赖软件,你需要参考本手册从 Ceph 软件库下载,然后继续看安装 Ceph 对象存储。 获取软件包 有两种方法获取软件包: 增加源: 增加源是获取二进制包的最简方法,因为多数情况下包管理工具都能自动下载、并解决依赖关系。然而,这种方法要求各 Ceph 节点都能连接互联网。 手动下载: 如果你的环境不允许 Ceph 节点访问互联网,手动下载软件包安装 Ceph 也不复杂。 准
问题内容: 使用Express框架时,如何在Node中下载URL的内容?基本上,我需要完成Facebook身份验证流程,但是如果没有获取其OAuth令牌URL,就无法做到这一点。 通常,在PHP中,我会使用Curl,但是Node等效项是什么? 问题答案: http://nodejs.org/docs/v0.4.11/api/http.html#http.get
问题内容: 我正在尝试从Firefox扩展程序中下载一些二进制数据。当我尝试将创建的XMLHttpRequest设置为arraybuffer模式时: 错误 被抛出。 还有另一种在Firefox扩展中下载二进制数据的方法吗? 问题答案: 您必须先调用该方法。