[ 
https://issues.apache.org/jira/browse/HTTPCLIENT-2338?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17880576#comment-17880576
 ] 

Oleg Kalnichevski commented on HTTPCLIENT-2338:
-----------------------------------------------

[~michu4k] Please review / test the proposed fix:

[https://github.com/apache/httpcomponents-client/compare/5.3.x...HTTPCLIENT-2338]

Oleg

> 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
>            Priority: Minor
>             Fix For: 5.3.2, 5.4-beta2
>
>
> 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

Reply via email to