java 登录编程_Java编程通过session访问需要登录的页面
使用Java访问一般网页,进行数据抓取等比较简单,直接用URL和URLConnection连接所需要的网站地址即可,然后对返回的html源码进行处理分析,获取感兴趣的内容。
不过如果是需要登录后才能访问的网页就不能直接传入网站url进行连接了,一般网页会自动跳转到登录页面,要求先登录。
另外,即使先在登录页面进行了登录,然后再转到要登录才能访问的网页时,如果没在第二次连接中加入之前登录成功后的session,那么访问仍然会失败。URLConnection每次打开一个连接,如果不进行设置,则默认会以新的session去访问,那么相当于又需要重新登录,因此需要加入登录成功的session才能访问到需要登录的页面。
以下通过一个小例子来说明该如何操作:
1.首先找到登录界面
2.查看表单提交给哪个action
3.来到单一的表单提交页面
4.修改表单提交方式为get
5.随便输入用户名和密码后浏览器的地址栏就有这么一串地址,只要把user和password改成正确的,那么直接在浏览器输入这串地址就直接登录,类似的,直接用URLConnetion打开这串数据的连接即实现了登录,获取服务器返回过来的session,下次再连接该网站的别的需要登录的页面时带上这个session即可成功访问了。
代码如下(具体网站地址已隐去):
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
public class Test
{
public static void main(String[] args) throws Exception//以下仅举个小例子,不处理异常
{
String id="xxxxx";
String passwd="xxxxx";
String loginUrl="http://xxxxx/login.aspx?__VIEWSTATE=dDw2Nzg5Mjk2NTY7O2w8b2s7Pj5OOk%2B5QUCLHuIzBtlhui5aZbY11Q%3D%3D&txt_user="+id+"&txt_password="+passwd+"&ok.x=35&ok.y=12";
URL url = new URL(loginUrl);
URLConnection conn = url.openConnection();
String sessionValue = conn.getHeaderField("Set-Cookie");//获取session值
String[] sessionId = sessionValue.split(";");
URL newUrl = new URL("http://xxxxx/student_info1.aspx");
URLConnection newConn = newUrl.openConnection();
newConn.setRequestProperty("Cookie", sessionId[0]);
newConn.connect();
BufferedInputStream bis = new BufferedInputStream(newConn.getInputStream());
InputStreamReader inputStreamReader = new InputStreamReader(bis,"utf-8");
BufferedReader br = new BufferedReader(inputStreamReader);
String str = null;
while ((str = br.readLine()) != null)
{
System.out.println(str);//输出登录后才能访问的网页的html源码,可以根据需要获取相关信息
}
}
}
java 登录编程_Java编程通过session访问需要登录的页面相关推荐
- java没思路_Java编程没思路写不出代码怎么办
成功不是你想要就能得到的,而是需要你不断努力争取的.时间飞逝转眼间已经学习java编程近一个月了.从零基础到现在能够自己独立完成一段完整的代码,成就感驱使着我学习更多的知识,做出更加优秀的作品. 1. ...
- java 用户登录模块_Java SSH框架系列:用户登录模块的设计与实现思路
1.简介 用户登录模块,指的是根据用户输入的用户名和密码,对用户的身份进行验证等.如果用户没有登录,用户就无法访问其他的一些jsp页面,甚至是action都不能访问. 二.简单设计及实现 本程序是基于 ...
- java培训机构_java编程软件培训机构
java编程软件培训机构,南京小码王科技培训有限公司,欢迎来电预约试听课:13851536647(郑老师)小码王实施以成就感驱动发自内在的建构主义教育,以面向未来高层次人才素质模型为导向,锻炼学生抽象 ...
- java 令牌解析_Java编程guava RateLimiter实例解析
本文主要研究的是Java编程guava RateLimiter的相关内容,具体如下. 场景1 在流量监管中的应用 约定访问速率(CAR)是流量监管常用技术之一,可以应用在端口进和出方向,一般应用在入方 ...
- java的成员方法_java编程中的成员方法是什么?
DIEA 成员方法描述对象所具有的功能或操作,反映对象的行为,是具有某种相对独立功能的程序模块.它与过去所说的子程序.函数等概念相当.一个类或对象可以有多个成员方法,对象通过执行它的成员方法对传来的消 ...
- java 异步事件_Java编程入门——异步事件:轮询与中断
CPU几乎把所有的时间都花费在从内存获取指令并运行它们的过程中.然而,CPU和主存仅仅只是计算机硬件系统中众多组件的其中两个.一个完整的系统还包含其他的设备,比如: 硬盘或者固态硬盘,用来存储程序和数 ...
- java split()方法_Java编程性能优化一些事儿
点击上方 "程序员小乐"关注, 星标或置顶一起成长 每天凌晨00点00分, 第一时间与你相约 每日英文 Smile and stop complaining about the t ...
- java异步处理_Java编程开发好入门吗 消息队列的用途有哪些
Java编程开发好入门吗?消息队列的用途有哪些?消息队列是指能够提供消息排队消费功能的软件程序,是消息队列中间件的一部分.消息队列中间件是分布式系统中重要的组件.接下来就给大家讲解消息队列的优势.类型 ...
- java 延时发送邮件_java编程实现邮件定时发送的方法
本文实例讲述了java编程实现邮件定时发送的方法.分享给大家供大家参考,具体如下: 最近做项目时客户提出了一个需求:系统定时发送E-mail到其客户,达到通知的效果.先将实例分享给大家,如果确实有一些 ...
最新文章
- OpenCV+python:图像梯度
- 论文|记忆网络之Memory Networks
- 农业走出去-国际农民丰收节贸易会·刘合光:走向全球思考
- iptables的基础知识-iptables中的状态检测
- 轮胎扎了“钉子”该怎么办?到底要不要拔掉?
- Protocol Buffer入门——轻松搭建java环境 .
- 作业19——夜间模式的开启与关闭,父模板的制作
- 摆放家具-家具类以及创建家具对象
- timeSetEvent、回调函数、CCriticalSection
- Springboot项目固化依赖的那点事
- JavaScript学习笔记:对象
- 一年了,写点关于人生的东西吧
- 联通3G用户破千万 建成全球规模最大WCDMA网络
- (BUG记录)使用迭代器安全的删除处于循环下集合中的元素
- SGX Enable
- 4.VEH(向量化异常处理)
- 毕业论文开题报告撰写指南-宾夕法尼亚州立大学研究生写作中心
- PS小知识(五)——羽化(图片拼接后去缝、自然过渡渐变)
- 计算机室英语单词怎么读,“计算机”英语单词怎么读?
- pythonfor循环文件写入失败_Python:使用for循环写入文件
热门文章
- 天猫整站SSM-分页-总结(做个人学习笔记整理用)
- 图解springmvc 执行流程
- 在mybatis中调oracle dblink存储过程
- Newtonsoft.Json反序列化(Deserialize)出错:Bad JSON escape sequence
- ASP.NET MVC5(一):ASP.NET MVC概览
- sublimeText OmniMarkupPreviewer 404
- OC Swift中UITextFiled、UITextView限制输入字数
- 初步认识spring mvc
- NYOJ88(数论)
- Jquery Money 验证,转换成千分位