IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> openfeign 转发post 接口 错误 Incomplete output stream executing POST http: |xxxx -> 正文阅读

[网络协议]openfeign 转发post 接口 错误 Incomplete output stream executing POST http: |xxxx

openfeign 转发post 接口 错误 Incomplete output stream executing POST http://xxxx

问题描述

当采用feign转发 post请求时,报错

 /**
     * 转发post
     *
     * @param uri  url
     * @param body data
     * @return
     */
    @RequestLine("POST")
    ResponseResult<Object> forwardPost(URI uri, @Param Object body);

转发服务定义了拦截

 .requestInterceptor(requestTemplate -> {
      // 装配请求体 header
     ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
     assert attributes != null;
     HttpServletRequest request = attributes.getRequest();
     Enumeration<String> headerNames = request.getHeaderNames();
     if (Objects.nonNull(headerNames)) {       
     	while (headerNames.hasMoreElements()) {
           String key = headerNames.nextElement();       
           String values = request.getHeader(key);
           requestTemplate.header(key, values);       
  	  	}
    } else {
  		 requestTemplate.header("error", "no header");
   	  }
  })

运行就报错

Incomplete output stream executing POST http://localhost:8080/hello/obj"

经过验证发现是
自定义 requestTemplate 添加请求头,导致post类型请求循环调用,报错
百度找不到原因,
很多都在说添加依赖

<dependency>
	<groupId>io.github.openfeign</groupId>
	<artifactId>feign-httpclient</artifactId>
</dependency>

配置

feign:
  httpclient:
    enabled: true # 默认就是true

这个解决不了本文问题

最终必应搜到github有解答

headers.remove("content-length");
it work
# 链接
https://github.com/spring-cloud/spring-cloud-openfeign/issues/390
remove the header param content-length can resolve it

解决方案,不要添加"content-length"

// feign源码问题,带"content-length" 会报错
if (!"content-length".equals(key)) {
    String values = request.getHeader(key);
    requestTemplate.header(key, values);
}
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 12:47:24  更:2022-04-04 12:49:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:49:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码