[ https://issues.apache.org/jira/browse/HTTPCLIENT-1690?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Oleg Kalnichevski updated HTTPCLIENT-1690: ------------------------------------------ Labels: stuck volunteers-wanted (was: ) Fix Version/s: (was: Future) Stuck > ZipException occurs when content-encoding-header is set for 304-response > ------------------------------------------------------------------------- > > Key: HTTPCLIENT-1690 > URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1690 > Project: HttpComponents HttpClient > Issue Type: Bug > Components: HttpCache > Affects Versions: 4.5 > Reporter: Johannes Gruber > Labels: stuck, volunteers-wanted > Fix For: Stuck > > > h4.Test scenario > - Setup http server > - Execute Request twice > - First response > -- Status: 200 > -- Cache-Control: public > -- ETag: 123 > -- Body: some text > - Second response > -- Status: 304 > -- Content-Encoding: gzip > - Effect: java.util.zip.ZipException: Not in GZIP format > - Expected: Cached response > h4.JUnit-Test > - Dependencies: junit 4.11, commons-io 2.4, com.github.tomakehurst:wiremock > 1.57 > {code} > import com.github.tomakehurst.wiremock.junit.WireMockRule; > import org.apache.commons.io.IOUtils; > import org.apache.http.client.methods.CloseableHttpResponse; > import org.apache.http.client.methods.HttpGet; > import org.apache.http.impl.client.CloseableHttpClient; > import org.apache.http.impl.client.HttpClientBuilder; > import org.apache.http.impl.client.cache.CacheConfig; > import org.apache.http.impl.client.cache.CachingHttpClientBuilder; > import org.junit.Assert; > import org.junit.Rule; > import org.junit.Test; > import java.io.IOException; > import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; > import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; > import static com.github.tomakehurst.wiremock.client.WireMock.get; > import static com.github.tomakehurst.wiremock.client.WireMock.stubFor; > import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo; > public class GZipCachingHttpClientBuilderTest { > private static final String TEST_BODY = "Sometext"; > @Rule > public WireMockRule wireMockRule = new WireMockRule(0); > @Test > public void testGzipError() throws Exception { > stubFor(get(urlEqualTo("/my/resource")) > .willReturn(aResponse() > .withStatus(200) > .withHeader("Cache-Control", "public") > .withHeader("ETag", "123") > .withBody(TEST_BODY) > )); > stubFor(get(urlEqualTo("/my/resource")) > .withHeader("If-None-Match", equalTo("123")) > .willReturn(aResponse() > .withHeader("Content-Encoding", "gzip") > .withStatus(304) > )); > CacheConfig.Builder cfgBuilder = CacheConfig.custom(); > CacheConfig cfg = cfgBuilder.setMaxCacheEntries(1024).build(); > HttpClientBuilder bld = > CachingHttpClientBuilder.create().setCacheConfig(cfg); > CloseableHttpClient client = bld.build(); > executeRequest(client); > executeRequest(client); // second request causes Exception :-( > } > private void executeRequest(CloseableHttpClient client) throws IOException { > int port = wireMockRule.port(); > CloseableHttpResponse resp = client.execute(new > HttpGet("http://localhost:"+port+"/my/resource")); > Assert.assertEquals(TEST_BODY, > IOUtils.toString(resp.getEntity().getContent())); > } > } > {code} -- This message was sent by Atlassian JIRA (v6.3.15#6346) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@hc.apache.org For additional commands, e-mail: dev-h...@hc.apache.org