• Java模拟登陆02【转载】


         在使用java访问URL时,如果该URL需要身份验证,那么就不能够直接访问,因为没有登陆。那么,如何解决这个问题呢?
         方法是使用java模拟登陆,登陆后记录下cookie信息,在下次发起请求时时将cookie发送过去用以表明身份,这样就能够访问带有权限的URL了。
    下面首先介绍使用java模拟登陆

     1                 // 连接地址(通过阅读html源代码获得,即为登陆表单提交的URL)
     2         String surl = "http://login.goodjobs.cn/index.php/action/UserLogin";
     3 
     4         /**
     5          * 首先要和URL下的URLConnection对话。 URLConnection可以很容易的从URL得到。比如: // Using
     6          * java.net.URL and //java.net.URLConnection
     7          */
     8         URL url = new URL(surl);
     9         HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    10 
    11         /**
    12          * 然后把连接设为输出模式。URLConnection通常作为输入来使用,比如下载一个Web页。
    13          * 通过把URLConnection设为输出,你可以把数据向你个Web页传送。下面是如何做:
    14          */
    15         connection.setDoOutput(true);
    16         /**
    17          * 最后,为了得到OutputStream,简单起见,把它约束在Writer并且放入POST信息中,例如: ...
    18          */
    19         OutputStreamWriter out = new OutputStreamWriter(connection
    20                 .getOutputStream(), "GBK");
    21                 //其中的memberName和password也是阅读html代码得知的,即为表单中对应的参数名称
    22         out.write("memberName=myMemberName&password=myPassword"); // post的关键所在!
    23         // remember to clean up
    24         out.flush();
    25         out.close();
    26 
    27         // 取得cookie,相当于记录了身份,供下次访问时使用
    28         String cookieVal = connection.getHeaderField("Set-Cookie");

      登陆成功后,即可访问其他URL了。

     1                 String s = "http://user.goodjobs.cn/dispatcher.php/module/Resume/action/Preview";
     2         //重新打开一个连接
     3                 url = new URL(s);
     4         HttpURLConnection resumeConnection = (HttpURLConnection) url
     5                 .openConnection();
     6         if (cookieVal != null) {
     7                         //发送cookie信息上去,以表明自己的身份,否则会被认为没有权限
     8             resumeConnection.setRequestProperty("Cookie", cookieVal);
     9         }
    10         resumeConnection.connect();
    11         InputStream urlStream = resumeConnection.getInputStream();
    12         BufferedReader bufferedReader = new BufferedReader(
    13                 new InputStreamReader(urlStream));
    14         String ss = null;
    15         String total = "";
    16         while ((ss = bufferedReader.readLine()) != null) {
    17             total += ss;
    18         }
    19         IOUtils.write(total, new FileOutputStream("d:/index.html"));
    20         bufferedReader.close();

         通过上述方式,就能访问带有权限控制的URL了。思路即为:模拟登陆,取得cookie以记录身份,下次请求时发送cookie以表明身份。

    原文地址:http://blog.csdn.net/prince2270/article/details/6137810

  • 相关阅读:
    python-----贴图 和 报错:OSError: image file is truncated (8 bytes not processed)的处理
    springboot集成RabbitMQ
    MySQL数据库设计规范
    腾讯云COS对象存储
    腾讯云OCR图片文字识别
    java基础之 java注释
    centos7下自动备份mysql数据库
    nginx配置ssl证书
    java基础之 控制语句
    js -- 操作sqlite数据库
  • 原文地址:https://www.cnblogs.com/dekevin/p/3581394.html
Copyright © 2020-2023  润新知