http为什么对我的Java GET请求的响应的头比Curl的相同URL的头少
我在玩OANDA API。文档说明,对所有成功GET请求的响应都将包含一个ETag头:http://developer.oanda.com/rest-live/development-guide/#etag
我已经确认,当我成功向Curl提出请求时,情况就是这样:
$ curl -i "https://api-sandbox.oanda.com/v1/prices?instruments=EUR_USD"
HTTP/1.1 200 OK
Server: openresty/1.7.0.1
Date: Fri, 26 Dec 2014 17:27:01 GMT
Content-Type: application/json
Content-Length: 139
Connection: keep-alive
ETag: "6a6e222a3f90df8f333ff2a6edfb603e4a354905"
{
"prices" : [
{
"instrument" : "EUR_USD",
"time" : "2014-12-26T17:26:12.336249Z",
"bid" : 1.24105,
"ask" : 1.24119
}
]
}
但是,当我在HttpClient org.apache.httpcomponents 4.3
上有一个成功的请求时,不包括内容长度和ETag头
2014-12-26 17:27:54 INFO RestClient:91 - Executing request: GET https://api-sandbox.oanda.com/v1/prices?instruments=EUR_USD HTTP/1.1
2014-12-26 17:27:55 INFO RestClient:103 - Response OK, processing...
2014-12-26 17:27:55 INFO RestClient:108 - {
"prices" : [
{
"instrument" : "EUR_USD",
"time" : "2014-12-26T17:28:01.935790Z",
"bid" : 1.241,
"ask" : 1.24117
}
]
}
2014-12-26 17:27:55 INFO RestClient:110 - Headers: [Server: openresty/1.7.0.1, Date: Fri, 26 Dec 2014 17:28:14 GMT, Content-Type: application/json, Transfer-Encoding: chunked, Connection: keep-alive]
当我记录响应Java GET请求收到的所有头时,我缺少ETag和Content-Length头
我想在我的Java代码中使用ETag头,所以请您帮助我理解为什么不返回它
# 1 楼答案
默认情况下,HttpClient启用了压缩,并且在启用压缩时,OANDA API不支持ETag: