在使用java访问URL时,如果该URL需要身份验证,那么就不能够直接访问,因为没有登陆。那么,如何解决这个问题呢?

方法是使用java模拟登陆,登陆后记录下cookie信息,在下次发起请求时时将cookie发送过去用以表明身份,这样就能够访问带有权限的URL了。

下面首先介绍使用java模拟登陆。

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

java模拟Cookies登陆的更多相关文章

  1. Java模拟新浪微博登陆抓取数据

    前言:  兄弟们来了来了,最近有人在问如何模拟新浪微博登陆抓取数据,我听后默默地抽了一口老烟,暗暗的对自己说,老汉是时候该你出场了,所以今天有时间就整理整理,浅谈一二. 首先:  要想登陆新浪微博需要 ...

  2. Jsoup实现java模拟登陆

    Jsoup实现java模拟登陆 2013-10-29 14:52:05|  分类: web开发|举报|字号 订阅     下载LOFTER我的照片书  |     1:如何获取cookies. 1.1 ...

  3. java模拟有验证码的Http登陆

    所需资源下载链接(资源免费,重在分享) Tesseract:http://download.csdn.net/detail/chenyangqi/9190667 jai_imageio-1.1-alp ...

  4. Java模拟登陆02【转载】

    在使用java访问URL时,如果该URL需要身份验证,那么就不能够直接访问,因为没有登陆.那么,如何解决这个问题呢?     方法是使用java模拟登陆,登陆后记录下cookie信息,在下次发起请求时 ...

  5. 浏览器与服务器交互原理以及用java模拟浏览器操作v

    浏览器应用服务器JavaPHPApache * 1,在HTTP的WEB应用中, 应用客户端和服务器之间的状态是通过Session来维持的, 而Session的本质就是Cookie, * 简单的讲,当浏 ...

  6. curl模拟自动登陆&采集网页数据

    <!DOCTYPE> <html> <head> <meta http-equiv="Content-Type" content=&quo ...

  7. Java模拟登录系统抓取内容【转载】

    没有看考勤的习惯,导致我的一天班白上了,都是钱啊,系统也不发个邮件通知下....     为了避免以后还有类似状况特别写了个java模拟登录抓取考勤内容的方法(部分代码来自网络),希望有人修改后也可以 ...

  8. java模拟表单上传文件,java通过模拟post方式提交表单实现图片上传功能实例

    java模拟表单上传文件,java通过模拟post方式提交表单实现图片上传功能实例HttpClient 测试类,提供get post方法实例 package com.zdz.httpclient; i ...

  9. C# 模拟网站登陆

    实现此功能首先需要借助一些抓包工具,对相应的网站登陆过程进行分析,此过程根据网站的不同,可能复杂,也可能很简单.常用的抓包工具FF下FireBug和IE下的HttpWatch.这两个工具很强大,以此工 ...

随机推荐

  1. 用sqlldr导入csv文件

    1.新建文件test.ctl,内容如下 load dataCHARACTERSET 'UTF16' \*指定编码格式,很重要*\ infile 'vodall.csv' append into tab ...

  2. cppunit 的使用

    原文: http://blog.csdn.net/abcdef0966/article/details/5699248

  3. Windows移动开发(五)——初始XAML

    关于详细的基本功就先说这么多.后面遇到再补充说明,前面说的都是一些代码和原理方面的东西.接下来说的会有界面和代码结合,会有成就感,由于能真正的做出东西来了. Windows移动开发包含Windows ...

  4. double型转换成string型

    double型转换成string型 题目描写叙述: 如有一个函数.其可接受一个long double參数,并将參数转换为字符串.结果字符串应保留两位小数,比如,浮点值123.45678应该生成&quo ...

  5. 本地项目上传虚拟机的gitlab

    前提:在虚拟机安装了gitlab服务,并且本机可以访问到虚拟机的gitlab 自己本机项目上传到gitlab 1.先在gitlab上建立项目 拷贝项目地址: http://192.168.1.105/ ...

  6. web.xml整理

    web.xml,部署描写叙述符文件(专业术语).是在Servlet规范中定义的.是web应用的配置文件(Servlet 3.0已開始放弃使用web.xml,转而使用annotation注解来配置项目) ...

  7. 开源 java CMS - FreeCMS2.2 工作流管理

    项目地址:http://www.freeteam.cn/ 工作流管理 从FreeCMS 2.2開始支持 管理系统中使用到的工作流,如信息审核工作流. 1. 工作流组管理 从左側管理菜单点击工作流组管理 ...

  8. K度限制MST poj 1639

    /* k度限制MST:有一个点的度<=k的MST poj 1639 要求1号点的度不超过k 求MST 我们先把1号点扔掉 跑MST 假设有sum个连通分支 然后把这sum个分支连到1上 就得到了 ...

  9. Getting Installation aborted (Status 7) ApplyParsePerms: lsetfilecon of /syst...【转】

    OTA升级失败:原文http://en.miui.com/thread-112197-1-1.html Do you get this "Status 7" error in Re ...

  10. tflearn中num_epoch含义就是针对所有样本的一次迭代

    In tensorflow get started code: import tensorflow as tf import numpy as np features = [tf.contrib.la ...