On Wed, 2020-08-12 at 08:35 +0000, Henselin, Dirk (G-GCPS) wrote: > Hello, > > English is not my native language; please excuse typing errors. > I use HttpClient 4.5.12. > > I found that despite a cache hit, the CachingHttpClient returns null, > if the content-length header was missing in the original response. It > worked fine after forcing the server to add the content-length > header, but this isn't possible in case of chunked transfer encoding. > I looked into the source code and found, that the content-length > header of a subsequent response is merged into the cache entry's > response headers, if the content-length header was missing in the > original response. In case of a 304 content-length=0 is merged into > the cache entry and this causes returning null instead of the cached > entity. > In CachedHttpResponseGenerator I found the following method: > > private void addMissingContentLengthHeader(final HttpResponse > response, final HttpEntity entity) { > if (transferEncodingIsPresent(response)) { > return; > } > // Some well known proxies respond with Content-Length=0, > when returning 304. For robustness, always > // use the cached entity's content length, as modern browsers > do. > final Header contentLength = new > BasicHeader(HTTP.CONTENT_LEN, > Long.toString(entity.getContentLength())); > response.setHeader(contentLength); > } > > Obviously, this method adds a missing content length header, but not > in case of chunked transfer encoding. How can I solve this? >
Dirk, The behavior of this method looks correct to me as `Transfer-Encoding` and `Content-Length` headers are mutually exclusive. Could you please provide a reproducer for your original problem? Oleg --------------------------------------------------------------------- To unsubscribe, e-mail: httpclient-users-unsubscr...@hc.apache.org For additional commands, e-mail: httpclient-users-h...@hc.apache.org