java.net.SocketException: Connection reset by peer: socket write error
本文共 433 字,预计阅读时间 1 分钟
最近在项目中使用Httpclient对接外部接口时,内网使用Squid做正向代理,用POST请求在上传大于30kb的数据时,httpClient返回的信息总是xx.xx.xx.xx:80 failed to respond,查询代理日志发现报407没权限的错误。取消代理认证后再次请求,发现又抛出如图异常:
但在本地开发上传都是正常的,但在dev环境却出现这种问题。
于是经过不懈的查阅资料,发现http协议中header有一个参数:Expect:100-continue
。
Expect是一个请求消息头,包含一个期望提条件,只有在服务器满足期望条件时才能友好的处理请求,若不满足条件,则会返回用户自定义的错误状态码。但其在规范中只定义了一个期望条件,即Expect:100-continue。
尝试在请求头header中添加这个请求头信息,问题得以解决。究其原因,可能是对于content-length的值过大,服务器便会拒绝,故需要加请求头声明期望条件,让服务器代理上传的请求。
建议在使用httpClient时,都带上这个参数。
就是这么简单,你学废了吗?感觉有用的话,给笔者点个赞吧 !
分类:
13-异常处理Exception
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2020-04-09 SpringCloud Hystrix(服务熔断/降级)