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());
        }
}
相关推荐
lifewange6 分钟前
Idea如何调大字体
java·macos·intellij-idea
许彰午9 分钟前
# 一个Java老鸟的TensorFlow入门——从计算图到GradientTape
java·tensorflow·neo4j
itzixiao10 分钟前
L1-055 谁是赢家(10 分)[java][python]
java·python·算法
IT利刃出鞘11 分钟前
Java反射--PropertyDescriptor的使用
java·开发语言
所愿ღ24 分钟前
SSM框架-Spring1
java·开发语言·笔记·spring
invicinble31 分钟前
对于泛型的设计思路
java
kaico201832 分钟前
Jenkins Master 停机与备份
运维·servlet·jenkins
A_aspectJ39 分钟前
【Java基础开发】基于 Java Swing 开发的简易计算器 - 支持键盘
java·开发语言
2501_9130613443 分钟前
网络原理知识(7)
java·网络·面试
南境十里·墨染春水1 小时前
linux学习进程 线程同步——读写锁
java·jvm·学习