【发布时间】: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);