Принять кодировку gzip с помощью httr R

Я подписан на поставщика финансовых данных ORATS. Инженер-программист связался со мной, чтобы сообщить, что время ожидания моих запросов GET() истекло. Он сказал разрешить кодировку gzip в моем заголовке запроса GET(). SWE не пишет код на R и прислал мне некоторый код node.js, на который я могу опереться.

Я думал, что запрос httr GET() автоматически сжимает файлы в gzip.

Ниже приведен код node.js, предоставленный SWE, за которым следует мой текущий код R, который работал, пока я не увеличил размер файла, который я извлекаю из их API (начало истечения времени ожидания).

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)

Я хотел бы, чтобы этот код запрашивал сжатый файл. Спасибо.


person Jordan Wrong    schedule 03.05.2019    source источник
comment
Что мешает вам добавить Accept-Encoding = gzip в ваш httr GET-запрос?   -  person IonicSolutions    schedule 13.05.2019


Ответы (1)


Добавьте ту же строку Accept-Encoding в запрос httr GET:

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

Обратите внимание, что httr автоматически распаковывает ответ.

person IonicSolutions    schedule 13.05.2019
comment
разве я не ожидал, что вызов gzip будет работать быстрее? Они оба имеют одинаковое точное прошедшее время. Есть ли способ убедиться, что он правильно сжал файл? Спасибо - person Jordan Wrong; 13.05.2019
comment
Вы можете проверить это, используя один из методов, упомянутых в этом сообщении SuperUser. - person IonicSolutions; 13.05.2019
comment
Обратите внимание, что вполне может случиться так, что запрос использует gzip независимо от того, укажете ли вы его. Вы можете проверить это, проверив запрос httr. См. эту страницу для получения дополнительной информации о проверке заголовок httr-запроса. - person IonicSolutions; 17.05.2019