如何使用请求模块缓冲http响应?

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

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

我会转换一个流入的http响应,并将数据存储在一个变量中。我对节点流的了解不多,而我正在努力做到这一点。

var request = require('request');

request('http://google.com/doodle.png', function (error, response, body) {

     // buffer the stream response to and a string variable.   
})

提问于
用户回答回答于

请求模块为你缓冲响应。在回调中,body 一个字符串(或Buffer)。

如果你没有提供回调,你只会从请求中获得一个流; request() 返回一个 Stream

有关更多详细信息和示例,参阅文档。

请求假定响应是文本,因此它会尝试将响应正文转换为sring(不管MIME类型)。这会破坏二进制数据。如果想获取原始字节,请指定一个null encoding

request({url:'http://google.com/doodle.png', encoding:null}, function (error, response, body) {
    db.images.insert({ filename: 'google.png', imgData: body}, function (err) {

        // handle errors etc.

    }); 
});
用户回答回答于
var options = {
    headers: {
        'Content-Length': contentLength,
        'Content-Type': 'application/octet-stream'
    },
    url: 'http://localhost:3000/lottery/lt',
    body: formData,
    encoding: null, // make response body to Buffer.
    method: 'POST'
};

将编码设置为NULL,返回缓冲区。

扫码关注云+社区