在使用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. 华为/H3C Syslog配置

    H3C交换机的设置举例1. 组网需求将系统的日志信息发送到 linux 日志主机:日志主机的IP 地址为1.2.0.1/16:信息级别高于等于 informational 的日志信息将会发送到日志主机 ...

  2. Spring MVC-集成(Integration)-生成XML示例(转载实践)

    以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_xml.htm 说明:示例基于Spring MVC 4.1.6. 以下示例说明如何 ...

  3. hibernate使用c3p0数据源

    在配置好hibernate连接数据库环境的前提下,我们进行例如以下操作就能够搭建好hibernate中使用c3p0数据源的环境了. 1). 导入 jar 包: hibernate-release-4. ...

  4. java多线程设置优先级

    package com.itbuluoge.mythread; class SimpleThread extends Thread { private int priority; public Sim ...

  5. 使用U-Boot的TFTP(远程/网络内核)

    前提条件 假设您的主机PC运行的是Ubuntu 14.04.1 LTS或更高版本,并且与您的开发平台在同一个本地网络上;为了简单起见,我们假设网络上也有DHCP服务器.如果使用Juno,请确保使用的是 ...

  6. oc64--协议2@protocol

    // // SportProtocol.h // day17 // #import <Foundation/Foundation.h> @protocol SportProtocol &l ...

  7. 修改android系统开机动画

    本文转载自:http://blog.csdn.net/u012301841/article/details/51598115 修改android系统开机动画

  8. android recovery 主系统代码分析【转】

    本文转载自:http://blog.csdn.net/andyhuabing/article/details/9248713 阅读完上一篇文章: http://blog.csdn.net/andyhu ...

  9. javascript--给你的JS代码添加单元测试

    通过测试框架为JavaScript应用添加测试,从而保证代码的高质量.这里的笔记例子应用在jaywcjlove/validator.js中. 安装 用到三个工具chai(断言工具),mocha(测试框 ...

  10. PCB MS SQL SERVER版本管控工具source_safe_for_sql_server

    PCB由于业务关系复杂,业务触发一个事件时,可能需与数据库多个表进行关连处理才能拿到数据结果, 而表关连并不是简单的关连,实际是要进行大量数据筛选,逻辑判断,转换等过程...这个过程是复杂的 想一想, ...