我订阅了金融数据提供商ORATS。软件工程师与我联系,让我知道我的GET()请求正在超时。他说允许在我的GET()请求 header 中使用gzip编码。 SWE不使用R编写代码,而是向我发送了一些node.js代码以供使用。

我以为httr GET()请求会自动将文件压缩为gzip。

下面是SWE提供的node.js代码,其后是我当前的R代码,直到我增加了从其API中提取的文件大小(开始超时)之前,我的R代码一直有效。

const request = require('request');

const options = {
  url: 'https://api.orats.io/data/cores/general?include=earn',
  headers: {
  'Authorization' : 'your authorization token',
  'Accept-Encoding' : 'gzip'
  },
  gzip : true
};

request(options, function(err, response, body){
// Body is already uncompressed b/c the request library uncompresses it for you.
console.log(JSON.parse(body));
});


R code:
library(httr)
x = GET(url, add_headers(Authorization = token))
y = rawToChar(x$content)

我想要此代码来请求gziped文件。
谢谢你。

最佳答案

也将相同的Accept-Encoding行添加到httr GET请求中:

library(httr)
x = GET(url, add_headers(.headers = c('Authorization'= token,
                                      'Accept-Encoding' = 'gzip, deflate')))

注意httr automatically decompresses the response

关于r - 使用httr R接受gzip编码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55977993/

10-11 08:34