如何在使用Java';s网络图书馆?

如何在使用Java';s网络图书馆?,java,http,http-headers,Java,Http,Http Headers,我的一个小程序刚刚坏了,因为我刚才以编程方式浏览的网站现在似乎假定Java请求来自手机,而我要查找的链接不在他们的手机页面上 所以我想伪造一个Internet Explorer访问权限。如何使用java.net实现这一点?您需要将HTTP请求中的头设置为 我建议使用来发出请求,因为它为请求提供了更高级别的API。假设您使用的是java.net.URLConnection,然后调用setRequestProperty(String,String)将请求头设置为IE将使用的值。例如,要伪造IE6:

我的一个小程序刚刚坏了,因为我刚才以编程方式浏览的网站现在似乎假定Java请求来自手机,而我要查找的链接不在他们的手机页面上

所以我想伪造一个Internet Explorer访问权限。如何使用java.net实现这一点?

您需要将HTTP请求中的头设置为


我建议使用来发出请求,因为它为请求提供了更高级别的API。

假设您使用的是java.net.URLConnection,然后调用setRequestProperty(String,String)将请求头设置为IE将使用的值。例如,要伪造IE6:

URL url = new URL("http://google.com");
URLConnection connection = url.openConnection();
connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 1.2.30703)");
然后像前面一样使用连接对象

但是java.net是可怕的。改用ApacheCommonsHttpClient,这样更好


更好的是,使用一个专门为浏览网站而设计的框架,比如HtmlUnit

IIRC,通过命令行、JNLP文件或其他地方的
system
-D
设置
“http.agent”
系统属性。

为什么这样做而不使用Apache HttpClient?顺便说一句,它主要是你想要设置的用户代理HTTP头。首先,我避免了打包另一个库。第二件事,我正在使用的代码是通过java.net工作的,所以这会减少更改。啊,很好的调用。我不知道connection.setRequestProperty-默认情况下我一直使用HttpClient。它非常模糊,但这是因为URLConnection不一定是HTTP,所以方法名是泛型的。这正是我需要的!