我正在编写一个 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 直到一段时间后才变得活跃......
有人看过这个吗?有什么办法可以绕过它吗?
谢谢!
最佳答案
This SO answer建议预先设置系统属性。
关于java - setRequestProperty(用户代理)在 "a while"之后才激活,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5505300/