You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hc.apache.org by "Oleg Kalnichevski (Jira)" <ji...@apache.org> on 2024/09/06 15:14:00 UTC
[jira] [Updated] (HTTPCLIENT-2338) Accept-Encoding lost on request retrying
[ https://issues.apache.org/jira/browse/HTTPCLIENT-2338?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Oleg Kalnichevski updated HTTPCLIENT-2338:
------------------------------------------
Fix Version/s: 5.3.2
5.4-beta2
> 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-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org