项目中有集成hutool的依赖,平时用惯了这个工具类,觉得还挺不错,所以想着某个需求也用这个。
可是,意外往往就是在意想不到的时候发生了。
这个需求发布到线上后发现,请求算法的接口报404错误。明明已经在 header 设置了参数 Host,可是算法的服务器依然很诚实的返回了404。
关键代码如下

大致的检查下,应该问题出在了 execute() 这个方法里。
来到了 初始化网络连接 的方法

设置请求头

通过断点来到 HttpURLConnection 的 setRequestProperty() 方法

在这个方法里会判断 是否是限制的头部信息


由于 allowRestrictedHeaders 为false,并没有打开。(导致受限制的头部信息集合生效)

并且由于 受限制的集合() 里包含 Host

导致了自定义Host不成功,破案了!
可是 Hutool 的官方文档却这样说明

额…
博客作者在使用Hutool进行网络请求时遇到404错误,经过排查发现,问题源于`HttpURLConnection`的限制,不允许自定义Host头部。官方文档与实际行为存在出入,导致请求失败。解决方案是找到允许设置限制头部的方法或寻找替代方案。
1128

被折叠的 条评论
为什么被折叠?



