赞
踩
业务中需要将用httpUtils请求返回的headers全部返回,塞到HttpServletResponse中,代码如下:
- HttpServletResponse response;
-
- // 返回headers
- Arrays.stream(httpResponse.getHeaders()).forEach(header -> response.setHeader(header.getName(), header.getValue()));
使用http直接请求,和使用本项目代理请求对比,发现最后headers中缺少"Content-Length"和"Content-Type"。
看源码发现遇到这两个特殊字段时,分别赛到了setContentType和setContentLength中
所以需要再遍历时候重新赛回去
- 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());
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。