模拟登陆部分代码:

本次使用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模拟登录高校教务系统相关推荐

  1. 使用Httpclient模拟登陆正方软件股份有限公司开发的教务管理系统

    事先声明,我写这篇,只是为了分享一下,登录网站不止有使用cookies这一种方法,还有一种使用随机码的方法,并没有泄露"商业机密"的想法,本人才疏学浅,只是在站在巨人的肩膀上,摘到 ...

  2. java登陆session用法_Java web 登录 使用shiro和基于session的方式有何不同?

    session的确是一种很正确的登录方式,题主肯定是觉得为什么session这么简单的方式不用,要用Shiro这种框架来做登录? 首先,你的系统需要用户登录的目的一定是某些页面需要登录才能查看,那么在 ...

  3. python实现注册登录系统_python实现登录与注册系统

    本文实例为大家分享了python实现登录与注册系统的具体代码,供大家参考,具体内容如下 实现功能 1.调用文本文件里的用户信息 2.可以将注册信息存储在文本文件里 3.实现了密码格式的限制 具体用户信 ...

  4. java模拟登陆系统_Java模拟登录系统抓取内容【转载】

    1 @Component2 public class Login extendsBaseJobs {3 4 SimpleDateFormat sdf = new SimpleDateFormat(&q ...

  5. java微博模拟登陆_用httpclient模拟浏览器,登录新浪微博

    ①用Fiddler2追踪登录时的post请求,发现需要以下参数: check uname backURL autoLogin pwd 其中,backURL="/",check=&q ...

  6. java模拟数据库压测_java模拟数据库缓存

    实现缓存一些数据到本地,避免重复查询数据库,对数据库造成压力,代码如下: package threadLock; import java.util.HashMap; import java.util. ...

  7. python爬虫登陆教程_(python模拟登陆教程)python爬虫模拟登录是什么意思

    python爬虫模拟登录是什么意思 网站需要登录后才能所需要的信息,此时可以设计爬虫进拟登录,原理是利用浏cookie. 一.浏览器访问服务器的过程: (1)浏览器(客户端)向Web服务器发出一个HT ...

  8. java http请求 工具类_java模拟http请求调用远程接口工具类

    package ln; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamRea ...

  9. java里面自行车的属性_Java模拟自行车电动车属性调用

    属性:轮子个数,轮子颜色 行为:跑(输出语句模拟:"瞪着跑",输出语句中要有自行车的属性) 电动车类: 属性:轮子个数,轮子颜色,电池(布尔类型:真代表有电,假代表没电) 行为:跑 ...

最新文章

  1. 技术分享连载(十八)
  2. 为何从单体架构迁移到微服务这么难?
  3. Leetcode 105. 从前序与中序遍历序列构造二叉树 解题思路及C++实现
  4. matlab利用t-SNE实现高维数据可视化(tsne函数用法实例)
  5. 图像处理opencv(一)
  6. 【蓝桥杯】 2018年国赛 矩阵求和
  7. 对于Algorand的介绍
  8. 经典面试题(5):小心javascript自动插入分号机制
  9. Python制作AI贪吃蛇,细节、思路都写下来了!
  10. 实现jdbc连接mysql_Java JDBC连接MYSQL数据库教程(实现)
  11. php mvc vue 调用js函数_js 匿名函数自调用
  12. 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-涉及的数据定义
  13. js实现web贪吃蛇小游戏
  14. IPAD2降级ios6教程整合
  15. POI删除空白行 代码和其他用法(将会持续更新)
  16. 【nvidia】1.命令行方式安装nvidia显卡驱动
  17. 报错:Exception opening socket
  18. STM32串口屏学习
  19. double浮点数转字符串算法
  20. 第2章:几何方面:六边形面积

热门文章

  1. 永远怀念Steve Jobs——时代的先驱者
  2. java的claims_Java Claims.get方法代碼示例
  3. dcm4che源码编译build异常
  4. 【电气专业知识问答】问:直流回路中为何严禁使用交流空气断路器?
  5. 中国外用避孕药行业市场供需与战略研究报告
  6. 【前端知识之CSS】CSS视差滚动
  7. Flutter配置代理抓包
  8. 达职院计算机应用技术,达州职业高级中学2021年开设有哪些专业?
  9. 奥运英语[2] 你好! 早上好!Hi! Good Morning.
  10. Could not load file or assembly 'System.Core, Version=2.0.5.0