此问题与Migrate from Commons HttpClient to HttpComponents Client(从HttpClient 3迁移到HttpClient 4)有关。
我可以在浏览器中物理访问链接,但是当我尝试使用HttpClient 4.1.13访问同一链接时,我收到HTTP错误301(“永久移动”)。
使用HttpClient 3.1访问同一链接时,我没有收到HTTP错误301。
可能导致这种异常情况的原因是什么?这可能是我在HC 4下失踪的设置,使其表现如此吗?
答案 0 :(得分:2)
这可能会发生,因为原始服务器对具有不同User-Agent
标头的请求的响应不同。
答案 1 :(得分:1)
首先,301不是“错误”。 3xx回复是"redirection" responses。 4xx和5xx是错误系列。
根据您的问题,根据RFC 2616,用户代理may not automatically handle redirects if the request method isn't GET or HEAD。我猜你在做POST。 HttpClient 4在遵守HTTP规范方面比它的前身更严格,它绝对符合这一点的规范,所以这可能就是你看到这个问题的原因。
答案 2 :(得分:0)
如果您使用的是HC 4.x HttpClient service,它应该自动处理重定向。至少,这就是文档所说的。 (我注意到有一些配置属性,但文档说明默认启用了自动重定向处理。)