我正在使用 UnderArmour API 并请求 gpx 文件以获取给定位置的路线,并且工作正常。但是,下载需要一段时间,我想根据他们的压缩页面下载一个压缩文件:
所有端点都支持响应压缩。要启用压缩,您的请求必须提供值设置为 gzip 的“Accept-Encoding”。
获取 /7.1/... HTTP/1.1
主办方:api.underarmour.com
接受:应用程序/json
接受编码:gzip
我用来尝试这个的代码在这里(我已经用 XXX 替换了我的用户令牌以保护隐私):
gpxurl <- "https://api.ua.com/v7.1/route/?close_to_location=51.5%2C-0.1&format=gpx&field_set=detailed&limit=40"
r <- GET(gpxurl, add_headers("authorization"=XXX,
"Accept"="application/json",
"Accept-Encoding"="gzip"))
我得到的文件似乎没有被压缩。下载时间与下载原始文件的时间一样长,而且我不必进行任何提取。我似乎无法检查 httpbin 收到的标头,因为返回的文件是原始格式,并且 str(content(r)$headers) 失败,因为格式只是从服务器发回的字节的原子向量。它发回的标头如下,其中不包括“Accept”或“Accept-Encoding”标头,如果它正常工作,我希望它们在那里。
str(headers(r))
List of 11
$ content-type : chr "application/gpx+xml; charset=UTF-8"
$ content-length : chr "3506843"
$ connection : chr "keep-alive"
$ access-control-allow-origin: chr "*"
$ date : chr "Wed, 28 Feb 2018 17:29:37 GMT"
$ p3p : chr "CP=\"NOI DSP COR CURa ADMa DEVa TAIa OUR BUS IND UNI COM NAV INT\""
$ server : chr "edge-proxy/1.0"
$ uacf-request-id : chr "9c573cc7-3589-4987-a297-303722b6e6e9"
$ x-cache : chr "Miss from cloudfront"
$ via : chr "1.1 7db492e48a5d55351dcb787a8a14e113.cloudfront.net (CloudFront)"
$ x-amz-cf-id : chr "c7zlkuaUXoYVIsmpZvQlHHpGDNobFJw49nzhlg0_gXuGcbWBS6_zCQ=="
- attr(*, "class")= chr [1:2] "insensitive" "list"
如何从 UnderArmour API 获取压缩的 GPX 文件?