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());
        }
}
相关推荐
一只专注api接口开发的技术猿1 分钟前
微服务架构下集成淘宝商品 API 的实践与思考
java·大数据·开发语言·数据库·微服务·架构
2501_9444241212 分钟前
Flutter for OpenHarmony游戏集合App实战之记忆翻牌配对消除
android·java·开发语言·javascript·windows·flutter·游戏
鹿角片ljp19 分钟前
Java网络编程入门:从Socket到多线程服务器
java·服务器·网络
走进IT27 分钟前
DDD项目分层结构说明
java
橙露32 分钟前
嵌入式实时操作系统 FreeRTOS:任务调度与信号量的核心应用
java·大数据·服务器
愚公移码32 分钟前
蓝凌EKP产品:关联机制浅析
java·服务器·前端
阿蒙Amon39 分钟前
C#每日面试题-is和as的区别
java·开发语言·c#
Tao____40 分钟前
适合中小企业的物联网平台
java·物联网·mqtt·低代码·开源
迷路剑客1 小时前
ES-7.10-高亮HighLight知识点总结
java·数据库·mybatis
阿蒙Amon1 小时前
C#每日面试题-简述泛型约束
java·开发语言·c#