From 957b6b2caf5ac6ee6664a4710e1d3f5c20d45d7e Mon Sep 17 00:00:00 2001 From: rstoyanchev Date: Wed, 27 Sep 2023 14:01:35 +0100 Subject: [PATCH] Use URI String as fallback in ReactorClientHttpConnector Closes gh-31033 --- .../reactive/ReactorClientHttpConnector.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/spring-web/src/main/java/org/springframework/http/client/reactive/ReactorClientHttpConnector.java b/spring-web/src/main/java/org/springframework/http/client/reactive/ReactorClientHttpConnector.java index 6c523e9fb7..dc2dad00e7 100644 --- a/spring-web/src/main/java/org/springframework/http/client/reactive/ReactorClientHttpConnector.java +++ b/spring-web/src/main/java/org/springframework/http/client/reactive/ReactorClientHttpConnector.java @@ -108,7 +108,7 @@ public class ReactorClientHttpConnector implements ClientHttpConnector { HttpClient.RequestSender requestSender = this.httpClient .request(io.netty.handler.codec.http.HttpMethod.valueOf(method.name())); - requestSender = (uri.isAbsolute() ? requestSender.uri(uri) : requestSender.uri(uri.toString())); + requestSender = setUri(requestSender, uri); return requestSender .send((request, outbound) -> requestCallback.apply(adaptRequest(method, uri, request, outbound))) @@ -125,6 +125,18 @@ public class ReactorClientHttpConnector implements ClientHttpConnector { }); } + private static HttpClient.RequestSender setUri(HttpClient.RequestSender requestSender, URI uri) { + if (uri.isAbsolute()) { + try { + return requestSender.uri(uri); + } + catch (Exception ex) { + // Fall back on passing it in as a String + } + } + return requestSender.uri(uri.toString()); + } + private ReactorClientHttpRequest adaptRequest(HttpMethod method, URI uri, HttpClientRequest request, NettyOutbound nettyOutbound) {