diff --git a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/FeignBlockingLoadBalancerClient.java b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/FeignBlockingLoadBalancerClient.java index e4f54356..f84dc509 100644 --- a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/FeignBlockingLoadBalancerClient.java +++ b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/FeignBlockingLoadBalancerClient.java @@ -100,12 +100,16 @@ public class FeignBlockingLoadBalancerClient implements Client { .body(message, StandardCharsets.UTF_8).build(); } String reconstructedUrl = loadBalancerClient.reconstructURI(instance, originalUri).toString(); - Request newRequest = Request.create(request.httpMethod(), reconstructedUrl, request.headers(), request.body(), - request.charset(), request.requestTemplate()); + Request newRequest = buildRequest(request, reconstructedUrl); return executeWithLoadBalancerLifecycleProcessing(delegate, options, newRequest, lbResponse, supportedLifecycleProcessors); } + protected Request buildRequest(Request request, String reconstructedUrl) { + return Request.create(request.httpMethod(), reconstructedUrl, request.headers(), request.body(), + request.charset(), request.requestTemplate()); + } + // Visible for Sleuth instrumentation public Client getDelegate() { return delegate; diff --git a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/RetryableFeignBlockingLoadBalancerClient.java b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/RetryableFeignBlockingLoadBalancerClient.java index 67ac1c0d..97ea9b90 100644 --- a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/RetryableFeignBlockingLoadBalancerClient.java +++ b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/RetryableFeignBlockingLoadBalancerClient.java @@ -148,8 +148,7 @@ public class RetryableFeignBlockingLoadBalancerClient implements Client { } String reconstructedUrl = loadBalancerClient.reconstructURI(retrievedServiceInstance, originalUri) .toString(); - feignRequest = Request.create(request.httpMethod(), reconstructedUrl, request.headers(), - request.body(), request.charset(), request.requestTemplate()); + feignRequest = buildRequest(request, reconstructedUrl); } } org.springframework.cloud.client.loadbalancer.Response lbResponse = new DefaultResponse( @@ -173,6 +172,11 @@ public class RetryableFeignBlockingLoadBalancerClient implements Client { }); } + protected Request buildRequest(Request request, String reconstructedUrl) { + return Request.create(request.httpMethod(), reconstructedUrl, request.headers(), request.body(), + request.charset(), request.requestTemplate()); + } + private RetryTemplate buildRetryTemplate(String serviceId, Request request, LoadBalancedRetryPolicy retryPolicy) { RetryTemplate retryTemplate = new RetryTemplate(); BackOffPolicy backOffPolicy = this.loadBalancedRetryFactory.createBackOffPolicy(serviceId);