使用httr R接受gzip编码

4

我订阅了一家财务数据提供商ORATS。软件工程师联系我告知我的GET()请求超时了。他建议在我的GET()请求头中允许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)

我希望将此代码用于请求gzip压缩的文件。 谢谢。

什么阻止你在httr GET请求中添加Accept-Encoding =“gzip”? - IonicSolutions
1个回答

3
将相同的Accept-Encoding行添加到httr GET请求中:
最初的回答
library(httr)
x = GET(url, add_headers(.headers = c('Authorization'= token,
                                      'Accept-Encoding' = 'gzip, deflate')))

请注意,httr会自动解压响应。最初的回答。

我不会期望gzip调用运行得更快,因为它们的经过时间完全相同。有没有一种方法可以查看它是否正确地压缩了文件?谢谢。 - Jordan Wrong
您可以使用此SuperUser帖子中提到的方法之一进行检查。 - IonicSolutions
请注意,请求可能会独立于您的指定使用gzip。您可以检查httr请求以查看此情况。有关如何检查httr请求标头的更多信息,请参见此页面 - IonicSolutions

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接