我正在编写一个HTTP客户端,它需要解析来自网络服务器的响应,而且我遇到了(另一个)问题。
我发现在一个页面中我被重定向到他们的移动内容门户网站: 例如:www.example.com/m/public。这不是我想要的。
使用“普通”浏览器时,不会发生此重定向。
在查看我制作的捕获后,我发现这可能是因为我的用户代理被解释为手机浏览器(用户代理是“Java / 1.6.0_22”)。
所以我改变了用户代理,使用:
URL url = new URL(endpoint);
URLConnection conn = url.openConnection();
conn.setRequestProperty ( "User-agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.5.30729; InfoPath.1; .NET CLR 3.0.30618)");
令我觉得它仍然没有用,我发现我还在发送用户代理“Java / 1.6.0_22”。
然后我看了一下我的捕获,我发现在几次GET请求之后(在第一次GET之后我将GET发送到主页面上的源代码),用户代理神奇地从java改为“Mozilla” ......“。
看来我的setRequestProperty在一段时间后才会生效......
有没有人见过这个?有办法解决它吗?
谢谢!
答案 0 :(得分:1)
This SO answer建议先设置系统属性 。
答案 1 :(得分:0)
我遇到了同样的问题。我写了一个网络爬虫,抓住的网页是移动版本。现在我用了两个
System.setProperty("http.agent", "");
urlconn.setRequestProperty("User-Agent", "IE/9.0");
并且有效。