为什么我发出的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 进行成功的请求时,Content-Length 和 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 标头,请您帮助我理解为什么它没有被返回。

点赞
用户844123
用户844123

注意:当响应被压缩时,无法使用 ETags。

`` `

2014-12-26 18:44:08