首页 > 解决方案 > httr GET 返回错误的内容类型

问题描述

httr 1.4.1 R 版本 3.6.1(也尝试使用 3.5.3)编辑(添加verbose())输出。

我有一个请求如下:

r <- GET("https://my.cool.domain",add_headers(.headers = c('x-api-key' = 'abcdefg', 'Accept' = "text/csv")), verbose())

在我的机器上它响应:

-> GET / HTTP/1.1
-> Host: https://my.cool.domain
-> User-Agent: libcurl/7.54.0 r-curl/4.2 httr/1.4.1
-> Accept-Encoding: deflate, gzip
-> x-api-key: abcdefg
-> Accept: text/csv
-> 
<- HTTP/1.1 200 OK
<- Date: Tue, 26 Nov 2019 17:50:15 GMT
<- Content-Type: text/csv
<- Content-Length: 24902
<- Connection: keep-alive
<- x-amzn-RequestId: ...
<- Content-Encoding: deflate
<- x-amz-apigw-id: ...
<- X-Amzn-Trace-Id: ...
Response [https://my.cool.domain]
Date: 2019-11-26 17:20
Status: 200
Content-Type: text/csv
Size: 209 kB
cats,dogs...
yes,no...
yes,yes...
no,no...

但是在我同事的机器上(相同版本的 httr 和 R,以及更新版本的 R)我得到以下信息:

-> GET / HTTP/2
-> Host: https://my.cool.domain
-> User-Agent: libcurl/7.64.1 r-curl/4.2 httr/1.4.1
-> Accept-Encoding: deflate, gzip
-> x-api-key: abcdefg
-> Accept: text/csv
-> 
<- HTTP/2 200 
<- date: Tue, 26 Nov 2019 17:46:17 GMT
<- content-type: application/json
<- content-length: 21501
<- x-amzn-requestid: ...
<- content-encoding: deflate
<- x-amz-apigw-id: ...
<- x-amzn-trace-id: ...
Response [https://my.cool.domain]
Date: 2019-11-26 17:30
Status: 200
Content-Type: application/json
Size: 377 kB

我正在与https://my.cool.domain域的开发人员合作,我可以确认请求标头参数(x-api-key 和 'Accept' = "text/csv")是完美的。该请求适用于我的机器和其他几台机器,但不适用于这位同事的机器。

这里出了什么问题,我该如何调试?

谢谢

标签: rhttr

解决方案


这是通过httr::set_config(httr::config(http_version = 1.1))强制 1.1 修复的。


推荐阅读