java发送get请求400解决
2021/12/19 12:49:27
本文主要是介绍java发送get请求400解决,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
http发送get请求400问题解决小记:
仿佛代码有了保质期,项目在生产环境稳定运转,由于关联系统的升级意外暴露出http发送get请求的400错误。正产运行的请求为什么会突然变成400呢?难道真的是代码有保质期吗?
带着这样的疑惑,进行了一番的探索。首先,系统升级必然是要做兼容性考虑的,就可以排除是升级造成的问题;接着要追踪日志,根据错误信息定位问题。
首先,HTTP 400 Bad Request 原因如下:
1、语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求
2、请求参数有误
脑海中的第一反应连自己都怀疑人生了。。。这明明是之前正常运行的程序啊!!!
What is a 400 Bad Request Error?
更加离谱的是,用postman进行请求,或者是swagger,亦或是curl命令均可以得到正确的返回,真是奇葩啊!秉着遇到困难越挫越勇的精神,不破此局不罢休。突然想到了资源占用?http发送get请求的底层机制究竟是怎么回事呢?带着疑惑回归代码本身。
场景:java服务A发送一个http的get请求到B服务,在很长一段时间内能得到正常相应的,而在生产环境得到400错误后,用postman去测试还是能得到正常的响应。
HttpUtil.get(url);
分析:如此看来就是postman等接口测试并没有复现生产上的问题,基于对400错误的理解,就是服务调用方出现了问题,那是什么原因导致的400呢 ?
原来http在发送get请求的时候,会对cookie进行叠加,长时间的运转呢,导致cookie越来越长,最终出现header超长的400错误。
解决办法:确认服务双端对cookie没有业务需求的处理,服务调用方禁用cookie 即可。
HttpRequest.get(url).disableCookie().timeout(3000).execute().body();
基于本人读源码的能力有限,此处不展示源码图片,希望看到的小伙伴多多指教。。。如有不同的见解,望留言,多谢!
这篇关于java发送get请求400解决的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-02Java微服务系统项目实战入门教程
- 2024-11-02Java微服务项目实战:新手入门指南
- 2024-11-02Java项目实战:新手入门教程
- 2024-11-02Java小程序项目实战:从入门到简单应用
- 2024-11-02Java支付系统项目实战入门教程
- 2024-11-02SpringCloud Alibaba项目实战:新手入门教程
- 2024-11-02Swagger项目实战:新手入门教程
- 2024-11-02UNI-APP项目实战:新手入门与初级教程
- 2024-11-02编译部署资料入门教程:一步步学会编译和部署
- 2024-11-02地图服务资料入门指南