Java setRequestProperty(用户代理)在“之后”之前不活动;“一会儿”;

Java setRequestProperty(用户代理)在“之后”之前不活动;“一会儿”;,java,user-agent,Java,User Agent,我正在编写一个HTTP客户端,它需要解析来自Web服务器的响应,我遇到了(另一个)问题 我发现有一个页面被重定向到他们的移动内容门户: 示例:www.example.com/m/public。这不是我想要的 使用“普通”浏览器时,此重定向未发生 在查看了我所做的捕获之后,我发现这可能是因为我的用户代理被解释为移动手机浏览器(用户代理是“Java/1.6.022”) 因此,我使用以下方法更改了用户代理: URL url = new URL(endpoint); URLConnection conn

我正在编写一个HTTP客户端,它需要解析来自Web服务器的响应,我遇到了(另一个)问题

我发现有一个页面被重定向到他们的移动内容门户: 示例:www.example.com/m/public。这不是我想要的

使用“普通”浏览器时,此重定向未发生

在查看了我所做的捕获之后,我发现这可能是因为我的用户代理被解释为移动手机浏览器(用户代理是“Java/1.6.022”)

因此,我使用以下方法更改了用户代理:

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到主页上的源代码之后),用户代理神奇地从java变成了“Mozilla…”

似乎我的setRequestProperty直到一段时间后才变为活动状态

有人见过这个吗?有办法避开它吗


谢谢

建议先设置系统属性。

我也遇到了同样的问题。我写了一个网络爬虫,抓取的网页都是移动版本。现在我两者都用了

System.setProperty("http.agent", "");
urlconn.setRequestProperty("User-Agent", "IE/9.0");

它成功了。

谢谢,很抱歉没有找到更好的。我试过了,但我仍然看到只有在几次修改后更改才会生效。编辑:现在可以了。如果我将系统属性和请求属性设置为所需的用户代理字符串。谢谢