Michał Krysztofik created HTTPCLIENT-2338: ---------------------------------------------
Summary: Accept-Encoding lost on request retrying Key: HTTPCLIENT-2338 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-2338 Project: HttpComponents HttpClient Issue Type: Bug Components: HttpClient (classic) Affects Versions: 5.3.1 Reporter: Michał Krysztofik Make an HTTP request that is retried (e.g. response status 429). The HTTP headers of the retried request does not include an `Accept-Encoding` header. {code} import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; import org.apache.hc.client5.http.impl.classic.HttpClients; import org.apache.hc.client5.http.protocol.HttpClientContext; import org.apache.hc.core5.http.ClassicHttpRequest; import org.apache.hc.core5.http.impl.io.DefaultClassicHttpRequestFactory; import org.junit.jupiter.api.Test; import org.mockserver.integration.ClientAndServer; import org.mockserver.model.HttpRequest; import org.mockserver.socket.PortFactory; import java.io.IOException; import java.io.UncheckedIOException; import static org.assertj.core.api.Assertions.assertThat; import static org.mockserver.model.HttpRequest.request; import static org.mockserver.model.HttpResponse.response; public class ApacheTest { @Test void repeatedRequestHasNoAcceptEncodingHeader() { int serverPort = PortFactory.findFreePort(); String serverUrl = "http://localhost:" + serverPort; ClientAndServer server = ClientAndServer.startClientAndServer(serverPort); server.when(request()).respond(response().withStatusCode(429)); try (CloseableHttpClient httpClient = HttpClients.createDefault()) { ClassicHttpRequest request = DefaultClassicHttpRequestFactory.INSTANCE.newHttpRequest("GET", serverUrl); httpClient.execute(request, HttpClientContext.create(), r -> r); } catch (IOException e) { throw new UncheckedIOException(e.getMessage(), e); } HttpRequest[] sentRequests = server.retrieveRecordedRequests(null); assertThat(sentRequests).satisfiesExactly( first -> assertThat(first.getHeaderList()).extracting(h -> h.getName().getValue()) .containsExactlyInAnyOrder("content-length", "Connection", "User-Agent", "Host", "Accept-Encoding"), second -> assertThat(second.getHeaderList()).extracting(h -> h.getName().getValue()) .containsExactlyInAnyOrder("content-length", "Connection", "User-Agent", "Host") ); } }{code} -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@hc.apache.org For additional commands, e-mail: dev-h...@hc.apache.org