From afa2e85b2888b53ae775842789fa7fa68af85eab Mon Sep 17 00:00:00 2001 From: lanbinshen Date: Sun, 22 Mar 2026 22:35:15 +0800 Subject: [PATCH] Fix issue#1198 Signed-off-by: lanbinshen --- .../openfeign/FeignClientsConfiguration.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/FeignClientsConfiguration.java b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/FeignClientsConfiguration.java index f85e59b30..b4ab7c5b3 100644 --- a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/FeignClientsConfiguration.java +++ b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/FeignClientsConfiguration.java @@ -23,7 +23,10 @@ import feign.Feign; import feign.Logger; import feign.QueryMapEncoder; +import feign.Response; +import feign.ResponseInterceptor; import feign.Retryer; +import feign.Util; import feign.codec.Decoder; import feign.codec.Encoder; import feign.form.MultipartFormContentProcessor; @@ -112,6 +115,21 @@ public Decoder feignDecoder(ObjectProvider messageCo return new OptionalDecoder(new ResponseEntityDecoder(new SpringDecoder(messageConverters))); } + @Bean + @ConditionalOnMissingBean + public ResponseInterceptor feignResponseInterceptor() { + return (invocationContext, chain) -> { + Response response = chain.next(invocationContext); + if (invocationContext.returnType() == Response.class && response.body() != null + && response.body().length() == null) { + byte[] bodyData = Util.toByteArray(response.body().asInputStream()); + response.close(); + return response.toBuilder().body(bodyData).build(); + } + return response; + }; + } + @Bean @ConditionalOnMissingBean @ConditionalOnMissingClass("org.springframework.data.domain.Pageable")