HttpServletResponse设置headers返回,发现headers中缺少“Content-Length“和“Content-Type“两个参数。

业务中需要将用httpUtils请求返回的headers全部返回,塞到HttpServletResponse中,代码如下:

java 复制代码
HttpServletResponse response;

// 返回headers
Arrays.stream(httpResponse.getHeaders()).forEach(header -> response.setHeader(header.getName(), header.getValue()));

一、发现问题:

塞到HttpServletResponse中之后,发现headers中缺少"Content-Length"和"Content-Type"两个参数。

使用http直接请求,和使用本项目代理请求对比,发现最后headers中缺少"Content-Length"和"Content-Type"。

二、查找问题

看源码发现遇到这两个特殊字段时,分别赛到了setContentTypesetContentLength

三、解决问题

所以需要再遍历时候重新赛回去

java 复制代码
for (Header header : httpResponse.getHeaders()) {
        if ("Content-Type".equalsIgnoreCase(header.getName())) {
            response.setContentType(header.getValue());
        } else if ("Content-Length".equalsIgnoreCase(header.getName())) {
            response.setContentLength(Integer.valueOf(header.getValue()));
        } else {
            response.setHeader(header.getName(), header.getValue());
        }
}
相关推荐
qqxhb4 分钟前
零基础设计模式——行为型模式 - 责任链模式
java·设计模式·责任链模式
UP_Continue9 分钟前
C++--string的模拟实现
java·开发语言·c++
比奇堡在逃帅哥23 分钟前
Linux系统编程-DAY11(多路复用IO)
java·linux·服务器
天天摸鱼的java工程师23 分钟前
八年 Java 开发手记:6 大锁类型深度解析,覆盖 99% 并发编程场景
java·后端·面试
天天摸鱼的java工程师26 分钟前
从源码剖析到实战,HashMap 全解析
java·后端
寒山李白37 分钟前
Spring Boot 常用注解面试题深度解析
java·spring boot·面试·注解
西岭千秋雪_39 分钟前
@Lazy原理与实战
java·服务器·spring boot·spring
liang_jy1 小时前
Java this
java·面试
CodeCraft Studio1 小时前
国产化Excel处理组件Spire.XLS教程:用 Java 获取所有 Excel 工作表名称(图文详解)
java·excel·数据处理·spire
子豪-中国机器人1 小时前
C++ 信息学奥赛总复习题
java·jvm·算法