【发布时间】:2011-10-24 03:03:18
【问题描述】:
这有点奇怪。我正在使用 HTTPClient 4.1.2,似乎每当它找到带有“#”之类的 URL 时,它都会使用 URL 中的 # 进行完整获取。
例如,尝试获取 URL http://stks.co/eWt 将重定向到 URL http://news.ichinastock.com/2011/10/jack-ma-alibaba-has-prepared-20-billion-to-acquire-yahoo/#.Tpw-xG61XjU.twitter。现在这个 URL 是活动的,但问题是 HTTPClient 发送一个将 URI 设置为 URI: /2011/10/jack-ma-alibaba-has-prepared-20-billion-to-acquire-yahoo/#.Tpw-xG61XjU.twitter 的 get 请求,这导致服务器发回一个 404 页面未找到。
查看 IE、Firefox 和 cURL 发送的 GET,它们都将 URI 末尾的 #... #... 已被删除。这是与http://stks.co/eWt 完全相同的条目URL。
作为测试,将这个原始 URL 发送到 HTTPClient(即HttpGet httpget = new HttpGet("http://news.ichinastock.com/2011/10/jack-ma-alibaba-has-prepared-20-billion-to-acquire-yahoo/#.Tpw-xG61XjU.twitter");)会给出相同的 404 not found 结果。
所以问题是 HTTPClient 中是否有任何设置可以设置,以便可以从 URL 中自动删除尾随 #... 之类的内容。或者我将如何从 URL 中手动删除它(请记住,我还需要捕获所有重定向 URL)?
【问题讨论】:
-
是的,我看到了这个。但问题是我不知道 URL 中是否有 # 锚点。所有的 URL 都来自一个短 URL 服务,这个短 URL 服务将 #anchor 保留在 URL 中,而 HTTPClient 盲目地从重定向 301 中获取它并尝试获取页面...
标签: java httpclient http-get