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

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

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

  1. URL url = new URL("网页"); 
  2. HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
  3. connection.setDoOutput(true);//允许连接提交信息 
  4. connection.setRequestMethod("POST");//网页提交方式“GET”、“POST” 
  5. connection.setRequestProperty("User-Agent", "Mozilla/4.7 [en] (Win98; I)"); 
  6. StringBuffer sb = new StringBuffer(); 
  7. sb.append("username=admin"); 
  8. sb.append("&password=admin"); 
  9. OutputStream os = connection.getOutputStream(); 
  10. os.write(sb.toString().getBytes()); 
  11. os.close(); 
  12.  
  13.  
  14. BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
  15.  
  16.  
  17.  
  18.  
  19. String responseCookie = connection.getHeaderField("Set-Cookie");//取到所用的Cookie 
  20.            System.out.println("cookie:" + responseCookie); 
  21. String line = br.readLine(); 
  22.  
  23.  
  24. while (line != null) { 
  25.  
  26.  
  27. System.out.println(new String(line.getBytes())); 
  28.  
  29.  
  30. line = br.readLine();//打出登录的网页 
  31.  
  32.  
  33. //acces 
  34. URL url1 = new URL("网页的登录后的页面"); 
  35. HttpURLConnection connection1 = (HttpURLConnection) url1.openConnection(); 
  36. connection1.setRequestProperty("Cookie", responseCookie);//给服务器送登录后的cookie 
  37. BufferedReader br1 = new BufferedReader(new InputStreamReader(connection1.getInputStream())); 
  38.  
  39.  
  40. String line1= br1.readLine(); 
  41.  
  42.  
  43. while (line1 != null) { 
  44.  
  45.  
  46. System.out.println(new String(line1.getBytes())); 
  47.  
  48.  
  49. line1 = br1.readLine(); 
  50.  
  51.  

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

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值