java模拟登陆教务系统_Java模拟登录高校教务系统
模拟登陆部分代码:
本次使用HttpClient 4.3进行开发, 该版本与之前的代码写法风格相差较大, 大家多留意下.需导入Jar包:commons-logging-1.1.3.jar / httpclient-4.3.4.jar / httpcore-4.3.2.jar / jsoup-1.7.2.jar
private static CloseableHttpClient httpClient = HttpClients.createDefault();
/**
* 高校教务系统,模拟POST登陆
*
* @param username 学号
* @param password 密码
* @return
*/
public static int getLoginCookie(String username, String password) {
System.out.println("--------Get Cookie for Login---------");
// 登陆URL, POST数据提交地址
String loginUrl = "http://*.*.*.*/Default2.aspx";
int htmlCode= 0;
//模拟登陆,按实际服务器端要求选用 Post 或 Get 请求方式
HttpPost httpPost = new HttpPost(loginUrl);
System.out.println("request line : " + httpPost.getRequestLine());
try {
//设置登陆信息,POST提交数据
List nvps = new ArrayList ();
nvps.add(new BasicNameValuePair("__VIEWSTATE", "dDwtMTgzNTQyOTM0O3Q8O2w8aTwxPjs+O2w8dDw7bDxpPDExPjs+O2w8dDxwPDtwPGw8b25jbGljazs+O2w8d2luZG93LmNsb3NlKClcOzs+Pj47Oz47Pj47Pj47bDxDaGVja0JveDE7Pj4jTSDOG8YeEoLssydszmMECrKaiw=="));
nvps.add(new BasicNameValuePair("yh", username));
nvps.add(new BasicNameValuePair("kl", password));
nvps.add(new BasicNameValuePair("RadioButtonList1", "%D1%A7%C9%FA")); //“学生”的 urlEncode编码
nvps.add(new BasicNameValuePair("Button1", "%B5%C7++%C2%BC")); //“登录”的 urlEncode编码
nvps.add(new BasicNameValuePair("CheckBox1", "on")); // 代表接受许可
httpPost.setEntity(new UrlEncodedFormEntity(nvps));
CloseableHttpResponse response = httpClient.execute(httpPost);
try {
// 获取返回数据
HttpEntity entity = response.getEntity();
System.out.println("Response Line: " + response.getStatusLine());
System.out.println("Cookie: " + response.getFirstHeader("Set-Cookie").getValue());
htmlCode = response.getStatusLine().getStatusCode();
EntityUtils.consume(entity);
} finally {
response.close();
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return htmlCode;
}
运行结果,会打印出Cookie。
获取成绩部分代码:
/**
* 教务系统:查询成绩
*
* @param username 学号
* @param tmpcookies Cookie
* @return
*/
public static String getResultsHtml(String username) {
System.out.println("--------Get Results Data---------");
// 成绩的 Url
String dataUrl = "http://*.*.*.*/xscj.aspx?xh=" + username;
String htmlText = "";
try {
HttpGet httpGet = new HttpGet(dataUrl);
System.out.println("request line : " + httpGet.getRequestLine());
CloseableHttpResponse response = httpClient.execute(httpGet);
try {
HttpEntity entity = response.getEntity();
System.out.println("Response Line: " + response.getStatusLine());
if (entity != null) {
htmlText = EntityUtils.toString(entity);
EntityUtils.consume(entity);
}
} finally {
response.close();
}
} catch (Exception e) {
e.printStackTrace();
}
return htmlText;
}
运行结果:
数据处理部分:
/**
* 数据处理:提取成绩信息
* @param htmlSource 获取的成绩源码
*/
public static void getResults(String htmlSource) {
System.out.println("--------Processing Results Data---------");
Document document = Jsoup.parse(htmlSource);
Elements elements = new Elements(document.getElementById("DataGrid1").getElementsByTag("td"));
for (int i = 0; i < elements.size(); i++) {
System.out.println(elements.get(i).html() + "t" + elements.get(i+1).html() + "t" + elements.get(i+2).html() + "t" +
elements.get(i+3).html() + "t" + elements.get(i+4).html() + "t" + elements.get(i+5).html() + "t" +
elements.get(i+6).html() + "t" + elements.get(i+7).html() + "t" + elements.get(i+8).html());
System.out.println("----------------------Processing end-----------------------------");
i = i+8;
}
}
运行结果:
当然你也可以使用正则之类的进行处理。
java模拟登陆教务系统_Java模拟登录高校教务系统相关推荐
- 使用Httpclient模拟登陆正方软件股份有限公司开发的教务管理系统
事先声明,我写这篇,只是为了分享一下,登录网站不止有使用cookies这一种方法,还有一种使用随机码的方法,并没有泄露"商业机密"的想法,本人才疏学浅,只是在站在巨人的肩膀上,摘到 ...
- java登陆session用法_Java web 登录 使用shiro和基于session的方式有何不同?
session的确是一种很正确的登录方式,题主肯定是觉得为什么session这么简单的方式不用,要用Shiro这种框架来做登录? 首先,你的系统需要用户登录的目的一定是某些页面需要登录才能查看,那么在 ...
- python实现注册登录系统_python实现登录与注册系统
本文实例为大家分享了python实现登录与注册系统的具体代码,供大家参考,具体内容如下 实现功能 1.调用文本文件里的用户信息 2.可以将注册信息存储在文本文件里 3.实现了密码格式的限制 具体用户信 ...
- java模拟登陆系统_Java模拟登录系统抓取内容【转载】
1 @Component2 public class Login extendsBaseJobs {3 4 SimpleDateFormat sdf = new SimpleDateFormat(&q ...
- java微博模拟登陆_用httpclient模拟浏览器,登录新浪微博
①用Fiddler2追踪登录时的post请求,发现需要以下参数: check uname backURL autoLogin pwd 其中,backURL="/",check=&q ...
- java模拟数据库压测_java模拟数据库缓存
实现缓存一些数据到本地,避免重复查询数据库,对数据库造成压力,代码如下: package threadLock; import java.util.HashMap; import java.util. ...
- python爬虫登陆教程_(python模拟登陆教程)python爬虫模拟登录是什么意思
python爬虫模拟登录是什么意思 网站需要登录后才能所需要的信息,此时可以设计爬虫进拟登录,原理是利用浏cookie. 一.浏览器访问服务器的过程: (1)浏览器(客户端)向Web服务器发出一个HT ...
- java http请求 工具类_java模拟http请求调用远程接口工具类
package ln; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamRea ...
- java里面自行车的属性_Java模拟自行车电动车属性调用
属性:轮子个数,轮子颜色 行为:跑(输出语句模拟:"瞪着跑",输出语句中要有自行车的属性) 电动车类: 属性:轮子个数,轮子颜色,电池(布尔类型:真代表有电,假代表没电) 行为:跑 ...
最新文章
- 技术分享连载(十八)
- 为何从单体架构迁移到微服务这么难?
- Leetcode 105. 从前序与中序遍历序列构造二叉树 解题思路及C++实现
- matlab利用t-SNE实现高维数据可视化(tsne函数用法实例)
- 图像处理opencv(一)
- 【蓝桥杯】 2018年国赛 矩阵求和
- 对于Algorand的介绍
- 经典面试题(5):小心javascript自动插入分号机制
- Python制作AI贪吃蛇,细节、思路都写下来了!
- 实现jdbc连接mysql_Java JDBC连接MYSQL数据库教程(实现)
- php mvc vue 调用js函数_js 匿名函数自调用
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-涉及的数据定义
- js实现web贪吃蛇小游戏
- IPAD2降级ios6教程整合
- POI删除空白行 代码和其他用法(将会持续更新)
- 【nvidia】1.命令行方式安装nvidia显卡驱动
- 报错:Exception opening socket
- STM32串口屏学习
- double浮点数转字符串算法
- 第2章:几何方面:六边形面积
热门文章
- 永远怀念Steve Jobs——时代的先驱者
- java的claims_Java Claims.get方法代碼示例
- dcm4che源码编译build异常
- 【电气专业知识问答】问:直流回路中为何严禁使用交流空气断路器?
- 中国外用避孕药行业市场供需与战略研究报告
- 【前端知识之CSS】CSS视差滚动
- Flutter配置代理抓包
- 达职院计算机应用技术,达州职业高级中学2021年开设有哪些专业?
- 奥运英语[2] 你好! 早上好!Hi! Good Morning.
- Could not load file or assembly 'System.Core, Version=2.0.5.0