繁体   English   中英

使用HttpClient 4.x时避免HTTP错误301

[英]Avoiding HTTP Error 301 when using HttpClient 4.x

此问题与从Commons HttpClient迁移到HttpComponents Client (从HttpClient 3迁移到HttpClient 4)有关。

我可以在浏览器中物理访问链接,但是当我尝试使用HttpClient 4.1.13访问同一链接时,出现HTTP错误301(“永久移动”)。

使用HttpClient 3.1访问相同的链接时,我没有收到HTTP错误301。

是什么原因导致这种异常? 可能是我在HC 4下缺少的一种设置使其表现为这种设置吗?

因为源服务器对具有不同User-Agent标头的请求的响应不同,所以可能会发生这种情况。

首先,301不是“错误”。 3xx响应是“重定向”响应 错误系列为4xx和5xx。

根据RFC 2616,针对您的问题, 如果请求方法不是GET或HEAD ,则用户代理可能不会自动处理重定向 我猜您正在执行POST。 HttpClient 4在其对HTTP规范的遵从性方面比其前身更加严格,并且在这一点上它绝对符合该规范,因此这可能就是您看到此问题的原因。

如果您使用的是HC 4.x HttpClient服务 ,则该服务应自动处理重定向。 至少,这就是文档所说的。 (我注意到有一些配置属性,但是文档说默认情况下启用了自动重定向处理。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM