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());
        }
}
相关推荐
H Corey4 分钟前
Java--面向对象之继承与多态
java·开发语言·windows·学习·算法·intellij-idea
ejinxian13 分钟前
2026 年 Java 开发计划-Oracle公布
java·开发语言·java 开发计划
Sylvia-girl19 分钟前
Java之日志框架
java·开发语言
MengFly_26 分钟前
Java广播 —如何利用广播做服务发现
java·网络·服务发现
zqmattack28 分钟前
SQL sever根据身份证判断性别函数
java·数据库·sql
Macbethad29 分钟前
半导体EFEM设备TwinCAT程序设计方案
java·前端·网络
qq_3363139330 分钟前
java基础-多线程练习
java·开发语言·算法
鹿角片ljp32 分钟前
Java多线程编程:从基础到实战的完整指南
java·开发语言·后端
期待のcode43 分钟前
Java虚拟机的垃圾回收器
java·开发语言·jvm·算法
2301_797312261 小时前
学习Java40天
java·开发语言·学习