java.net模拟用户登录网页并维持session的方法

有的时候,会需要使用java的程序访问网页,正常的访问网页的程序很多,也没有什么可讲的,在这里主要说明一下如何使用java的访问网页时,需要登录时,如何保持登录的程序。

先简单讲解一下原理:实际上网页和服务器是两套应用,客户端访问服务器一次,实际上网页获取后,连接立即就断了,这样的话,说明服务器是不会保持长效连接的,但是在现实情况登录的话,客户端好像一直在保留连接,那么这种情况就和先前模式似乎不同;当然不是,断开连接是整个B/S架构的根本原理所在,因此怎么去保持这些连接,实际上就是利用Cookie,访问网页时,每次网页的服务器会产生一个Cookie,记录当前网页的一个键值,如果使用登录了后,服务器端的Session就会和客户端的一个Cookie产生连接,这样每次给这个页面发送客户端的Cookie所记录的Session的标识,即可完成登录的模拟。代码如下:

[java] view plaincopyprint?

    URL url = new URL("网页");HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setDoOutput(true);//允许连接提交信息connection.setRequestMethod("POST");//网页提交方式“GET”、“POST”connection.setRequestProperty("User-Agent","Mozilla/4.7 [en] (Win98; I)"); StringBuffer sb = new StringBuffer();sb.append("username=admin");sb.append("&password=admin"); OutputStream os = connection.getOutputStream(); os.write(sb.toString().getBytes()); os.close(); BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream())); String responseCookie = connection.getHeaderField("Set-Cookie");//取到所用的Cookie System.out.println("cookie:" + responseCookie);String line = br.readLine(); while (line != null) { System.out.println(new String(line.getBytes())); line = br.readLine();//打出登录的网页 } //acces URL url1 = new URL("网页的登录后的页面");HttpURLConnection connection1 = (HttpURLConnection) url1.openConnection();connection1.setRequestProperty("Cookie", responseCookie);//给服务器送登录后的cookieBufferedReader br1 = new BufferedReader(new InputStreamReader(connection1.getInputStream())); String line1= br1.readLine(); while (line1 != null) { System.out.println(new String(line1.getBytes())); line1 = br1.readLine(); }

不过现在很多网站都是用了网页的Token机制,也就是说每个页面都会产生一个唯一键值,而且再加上登录的验证码的过程,这样很多网页的程序就不能再单纯的使用这个网页登录了,但是这个机制可以让大家明白怎么去保持客户端Session的连接过程。筑起梦想的鸟巢,开始人生的长跑,领先每回的冲刺,

java.net模拟用户登录网页并维持session的方法

相关文章:

你感兴趣的文章:

标签云: