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时,都带上这个参数。

posted @   钟小嘿  阅读(1273)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2020-04-09 SpringCloud Hystrix(服务熔断/降级)
点击右上角即可分享
微信分享提示