0

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

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

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

什么可能导致这种异常?可能是我在 HC 4 下缺少的设置使其表现得那样吗?

4

3 回答 3

2

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

于 2012-05-06T12:31:52.487 回答
1

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

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

于 2012-05-06T04:01:46.490 回答
0

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

于 2012-05-06T01:23:13.093 回答