2017-06-01 6 views
0

Ich benutze httpclient 4.5.3 mit der Fluent API (http://hc.apache.org/httpcomponents-client-ga/tutorial/html/fluent.html). Nach dem Upgrade von 4.2.x auf httpclient 4.5.3 scheint der Header "Content-Encoding" in der Antwort aus dem Response-Header entfernt zu sein, und ich kann nicht herausfinden, wie die Gzip-Komprimierung unterstützt wird.GZIP mit httpclient 4.5.3

Ich mache eine GET-Anfrage an https://www.yahoo.com und sende den Header "Accept-Encoding": "gzip"

Meine Antwort-Header mit 4.5.3 zeigen nun folgend ohne Content-Encoding-Header:

Date: Thu, 01 Jun 2017 21:21:55 GMT 
Strict-Transport-Security: max-age=2592000 
X-Frame-Options: DENY 
Set-Cookie: autorf=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/; domain=www.yahoo.com 
Vary: Accept-Encoding 
Content-Type: text/html; charset=UTF-8 
Age: 0 
Transfer-Encoding: chunked 
Connection: keep-alive 
Via: http/1.1 ir11.fp.ne1.yahoo.com (ApacheTrafficServer) 
Server: ATS 
Cache-Control: no-store, no-cache, private, max-age=0 
Expires: -1 

Mein Antworthandler hat den folgenden Code. Jedoch ist entity.getContentEncoding() immer null.

Beim Ausführen durch den Debugger scheint das WrappedEntity Content-Encoding: gzip in der Kopfzeile. Wie erreiche ich das? Oder wie wird die gzip-Komprimierung mit httpclient 4.5.3 richtig gehandhabt?

[1]: https://i.stack.imgur.com/tyJ

Antwort

1

ResponseContentEncoding entfernt Content-Metadaten-Header wie Content-Length, Content-Encoding und Content-MD5, um den Content-Stream transparent durch die Kunden übereinstimmt Metadaten in den Antwortnachricht-Header eingebettet dekomprimiert, um sicherzustellen. Dies ist beabsichtigt. Wenn Sie die Inhaltsdekomprimierung mit fließender Fassade manuell bearbeiten möchten, müssen Sie einen benutzerdefinierten Anforderungs-Executor erstellen.

Executor executor = Executor.newInstance(HttpClients.custom().disableContentCompression().build());