我正在编写一个HTTP客户端,该客户端需要解析来自Web服务器的响应,并且遇到了(另一个)问题。
我发现有一个页面将我重定向到他们的移动内容门户:
例如: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(用户代理)直到“一会儿”之后才处于 Activity 状态,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5505300/