diff --git a/knife4j/knife4j-aggregation-spring-boot-starter/src/main/java/com/github/xiaoymin/knife4j/aggre/core/RouteDispatcher.java b/knife4j/knife4j-aggregation-spring-boot-starter/src/main/java/com/github/xiaoymin/knife4j/aggre/core/RouteDispatcher.java index aad9447f6305e54c5cb9277850bedc07c17a0786..2fd30c43a54bd3ef04d3b09e98550043a4478e18 100644 --- a/knife4j/knife4j-aggregation-spring-boot-starter/src/main/java/com/github/xiaoymin/knife4j/aggre/core/RouteDispatcher.java +++ b/knife4j/knife4j-aggregation-spring-boot-starter/src/main/java/com/github/xiaoymin/knife4j/aggre/core/RouteDispatcher.java @@ -16,6 +16,7 @@ import com.github.xiaoymin.knife4j.aggre.core.common.RouteUtils; import com.github.xiaoymin.knife4j.aggre.core.executor.ApacheClientExecutor; import com.github.xiaoymin.knife4j.aggre.core.executor.OkHttpClientExecutor; import com.github.xiaoymin.knife4j.aggre.core.pojo.BasicAuth; +import com.github.xiaoymin.knife4j.aggre.core.pojo.HeaderWrapper; import com.github.xiaoymin.knife4j.aggre.core.pojo.SwaggerRoute; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -139,10 +140,9 @@ public class RouteDispatcher { protected void writeResponseHeader(RouteResponse routeResponse,HttpServletResponse response){ if (routeResponse!=null){ if (CollectionUtil.isNotEmpty(routeResponse.getHeaders())){ - for (Map.Entry entry:routeResponse.getHeaders().entrySet()){ - //logger.info("{}:{}",entry.getKey(),entry.getValue()); - if (!StrUtil.equalsIgnoreCase(entry.getKey(),"Transfer-Encoding")){ - response.addHeader(entry.getKey(),entry.getValue()); + for (HeaderWrapper header:routeResponse.getHeaders()){ + if (!StrUtil.equalsIgnoreCase(header.getName(),"Transfer-Encoding")){ + response.addHeader(header.getName(),header.getValue()); } } } diff --git a/knife4j/knife4j-aggregation-spring-boot-starter/src/main/java/com/github/xiaoymin/knife4j/aggre/core/RouteResponse.java b/knife4j/knife4j-aggregation-spring-boot-starter/src/main/java/com/github/xiaoymin/knife4j/aggre/core/RouteResponse.java index 5555cd8f63cde383bfc4a6055e657610851f18e1..528916467077ec0621970fdaa3b171fa13987ceb 100644 --- a/knife4j/knife4j-aggregation-spring-boot-starter/src/main/java/com/github/xiaoymin/knife4j/aggre/core/RouteResponse.java +++ b/knife4j/knife4j-aggregation-spring-boot-starter/src/main/java/com/github/xiaoymin/knife4j/aggre/core/RouteResponse.java @@ -7,9 +7,11 @@ package com.github.xiaoymin.knife4j.aggre.core; +import com.github.xiaoymin.knife4j.aggre.core.pojo.HeaderWrapper; + import java.io.InputStream; import java.nio.charset.Charset; -import java.util.Map; +import java.util.List; /*** * @@ -22,7 +24,7 @@ public interface RouteResponse { * 获取响应头 * @return */ - Map getHeaders(); + List getHeaders(); /** * 是否请求成功 diff --git a/knife4j/knife4j-aggregation-spring-boot-starter/src/main/java/com/github/xiaoymin/knife4j/aggre/core/executor/ApacheClientResponse.java b/knife4j/knife4j-aggregation-spring-boot-starter/src/main/java/com/github/xiaoymin/knife4j/aggre/core/executor/ApacheClientResponse.java index 6a6f119ce184bfca3bd1e31b4159af32ed6759cb..9eb59705609f525d49cb1d09720277630678b721 100644 --- a/knife4j/knife4j-aggregation-spring-boot-starter/src/main/java/com/github/xiaoymin/knife4j/aggre/core/executor/ApacheClientResponse.java +++ b/knife4j/knife4j-aggregation-spring-boot-starter/src/main/java/com/github/xiaoymin/knife4j/aggre/core/executor/ApacheClientResponse.java @@ -10,6 +10,7 @@ package com.github.xiaoymin.knife4j.aggre.core.executor; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.StrUtil; import com.github.xiaoymin.knife4j.aggre.core.RouteResponse; +import com.github.xiaoymin.knife4j.aggre.core.pojo.HeaderWrapper; import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; @@ -20,8 +21,8 @@ import org.slf4j.LoggerFactory; import java.io.IOException; import java.io.InputStream; import java.nio.charset.Charset; -import java.util.HashMap; -import java.util.Map; +import java.util.ArrayList; +import java.util.List; /*** * @@ -48,17 +49,17 @@ public class ApacheClientResponse implements RouteResponse { } @Override - public Map getHeaders() { - Header[] headers= this.httpResponse.getAllHeaders(); - Map headerMaps=new HashMap<>(); + public List getHeaders() { + Header[] headers = this.httpResponse.getAllHeaders(); + List headerWrappers = new ArrayList<>(); if (ArrayUtil.isNotEmpty(headers)){ for (Header header:headers){ if (header!=null){ - headerMaps.put(header.getName(),header.getValue()); + headerWrappers.add(new HeaderWrapper(header.getName(),header.getValue())); } } } - return headerMaps; + return headerWrappers; } @Override diff --git a/knife4j/knife4j-aggregation-spring-boot-starter/src/main/java/com/github/xiaoymin/knife4j/aggre/core/executor/DefaultClientResponse.java b/knife4j/knife4j-aggregation-spring-boot-starter/src/main/java/com/github/xiaoymin/knife4j/aggre/core/executor/DefaultClientResponse.java index 2c1d568dc583b9b42d3fc8ff6262e3579591cc8e..b67e5d0df8a8aef55c994ce8b4403e9920cb0273 100644 --- a/knife4j/knife4j-aggregation-spring-boot-starter/src/main/java/com/github/xiaoymin/knife4j/aggre/core/executor/DefaultClientResponse.java +++ b/knife4j/knife4j-aggregation-spring-boot-starter/src/main/java/com/github/xiaoymin/knife4j/aggre/core/executor/DefaultClientResponse.java @@ -9,12 +9,13 @@ package com.github.xiaoymin.knife4j.aggre.core.executor; import com.github.xiaoymin.knife4j.aggre.core.RouteResponse; +import com.github.xiaoymin.knife4j.aggre.core.pojo.HeaderWrapper; import java.io.InputStream; import java.nio.charset.Charset; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.Map; +import java.util.List; /*** * @@ -33,7 +34,7 @@ public class DefaultClientResponse implements RouteResponse { } @Override - public Map getHeaders() { + public List getHeaders() { return null; } diff --git a/knife4j/knife4j-aggregation-spring-boot-starter/src/main/java/com/github/xiaoymin/knife4j/aggre/core/pojo/HeaderWrapper.java b/knife4j/knife4j-aggregation-spring-boot-starter/src/main/java/com/github/xiaoymin/knife4j/aggre/core/pojo/HeaderWrapper.java new file mode 100644 index 0000000000000000000000000000000000000000..563ee77b5901b0313cad0b7c45ad7a952207eb53 --- /dev/null +++ b/knife4j/knife4j-aggregation-spring-boot-starter/src/main/java/com/github/xiaoymin/knife4j/aggre/core/pojo/HeaderWrapper.java @@ -0,0 +1,43 @@ +package com.github.xiaoymin.knife4j.aggre.core.pojo; + +/** + * @author: chenzf + * @create: 2021/3/8 8:30 下午 + * @description: 自定义header包装bean + */ +public class HeaderWrapper { + + /** + * header名 + */ + private String name; + + /** + * header值 + */ + private String value; + + public HeaderWrapper() { + } + + public HeaderWrapper(String name, String value) { + this.name = name; + this.value = value; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } +}