node.js - node.js 中的 block 数据记录

标签 node.js http express

我在 http.request() 中的 node.js 中有以下函数

       res.on('data', function (chunk) {
    var sr="response: "+chunk;
    console.log(chunk);
    });

我在控制台中得到了这个

<Buffer 3c 3f 78 6d 6c 20 76 65 72 73 69 6f 6e 3d 22 31 2e 30 22 20 65 6e 63 6f
 64 69 6e 67 3d 22 75 74 66 2d 38 22 20 3f 3e 3c 72 65 73 75 6c 74 3e 3c 73 75 63
 ...>

但是当我使用这个时:

res.on('data', function (chunk) {
    var sr="response: "+chunk;
    console.log(sr);
    });

我得到了像这样的正确的 xml 响应:

responose: .....xml responose.....

我不明白为什么我需要附加一个字符串来输出正确的响应。第一个代码中生成的响应是什么意思?

最佳答案

chunk 是一个 Buffer ,这是Node存储二进制数据的方式。

因为它是二进制数据,所以需要将其转换为字符串才能正确显示它(否则,console.log 将显示其对象表示形式)。一种方法是将它附加到另一个字符串(你的第二个例子就是这样做的),另一种方法是调用 toString()在上面:

console.log(chunk.toString());

但是,我认为当 chunk 包含不完整的字符时,这可能会失败(UTF-8 字符可以包含多个字节,但您不能保证 chunk 并没有在这样的字节串中间被截断)。

关于node.js - node.js 中的 block 数据记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16542023/

相关文章:

node.js - 如何使新的elasticsearch node.js客户端仅在promise中返回主体?

javascript - 在 Material-UI TableCell 中格式化日期字符串

sql - 在顶部 SQL 插入后减少列中的所有值

node.js - 将 Node 与 Nano 和 couchdb 一起使用时出现 ECONNREFUSED

MySQL NodeJS Openshift 服务器 - 对数据库的查询似乎不起作用

javascript - Node JS - MVC - 命名约定

http - 如何在请求中转义正斜杠以使 url-routers 将其计为 uri 参数的一部分?

Java/Selenium-如何在下载文件夹中检查下载是否完成

http - 协议(protocol)相对 URL 方法在 Chrome 中不起作用

node.js - 为什么以及何时应该使用 express.Router()?