【问题标题】:Simulating Mobile Web Browser from java program从java程序模拟移动Web浏览器
【发布时间】:2012-04-02 14:04:16
【问题描述】:

我正在尝试使用 java 程序加载网页的移动版本,以便轻松地从网页中提取少量信息。

在 Firefox 中,添加用户代理切换器插件后,我添加了一个新的用户代理,其值为

"Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE71-1/110.07.127; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413"

之后,如果我尝试加载http://www.bbc.co.uk/,则移动版网页加载成功。

但我正在尝试通过设置User-Agent 来对使用 apache httpclient 库的 java 程序做同样的事情,如下所示:

HttpClient httpclient = new DefaultHttpClient();

HttpProtocolParams.setUserAgent(httpclient.getParams(),
  "Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE71-1/110.07.127; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413");

但我没有获得相同链接的移动版本。

我希望重定向会在此处自动发生,并且在修改用户代理时我将获得页面的移动版本。

您能帮我解决这个问题吗?

【问题讨论】:

  • 启用 HttpClient 日志记录 (hc.apache.org/httpcomponents-client-ga/logging.html) 并发布结果。
  • 现在我发现问题在于设置 window.location 以在响应中重定向网页的站点。不知何故,apache httpclient-4.1.3 甚至没有自动处理此参数设置重定向后 HttpClientParams.setRedirecting(params, true); DefaultHttpClient httpclient = new DefaultHttpClient(params);

标签: java browser mobile


【解决方案1】:

HttpClient 不支持JavaScript redirection。

请注意 HttpClient 不是浏览器。重要的是它缺少 UI、缓存、HTML 渲染器和 JavaScript 引擎。要了解更多关于 HttpClient 的范围,请参阅 HttpClient Primer

也许您可以尝试这些问题中提出的解决方案

【讨论】:

  • 谢谢..我现在开始使用 HtmlUnit,它完美地处理了 java 脚本重定向..
【解决方案2】:

您是否在 HttpClient 上设置了FollowRedirects?

【讨论】:

  • 嗨,我已将参数“http.protocol.handle-redirects”设置为“true”,因为 HttpClient 4.0 中的 HttpGet 方法不支持 setFollowRedirects。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-09
  • 1970-01-01
  • 2017-06-25
  • 2012-01-16
  • 1970-01-01
  • 2012-03-11
相关资源
最近更新 更多