java 模拟登录出现系统异常_很奇怪!Java web问题,模拟登陆教务系统刷新两次后就没反应了!...
我用HttpClient 4.5模拟登陆自己学校的教务系统,我们学校登陆成功先返回一个302跳转(勿喷,正方教务。。。):
先获取隐藏值:
/**
* 获取隐藏值
* @throws ClientProtocolException
* @throws IOException
*/
private void getHiddenValues() throws ClientProtocolException, IOException {
HttpGet get = new HttpGet(loginURL);
RequestConfig config = RequestConfig.custom().
setSocketTimeout(connectTimeout).
setConnectTimeout(socketTimeout).build();
get.setHeader("User-Agent", userAgent);
get.setConfig(config);
CloseableHttpResponse response = client.execute(get);
if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
HttpEntity entity = response.getEntity();
String rawHtml = EntityUtils.toString(entity);
Document doc = Jsoup.parse(rawHtml);
Element viewStateInput = doc.select("input[name=__VIEWSTATE]").first();
Element generatorInput = doc.select("input[name=__VIEWSTATEGENERATOR]").first();
Element validationInput = doc.select("input[name=__EVENTVALIDATION]").first();
// 网络有问题
if(viewStateInput == null) return;
params.add(new BasicNameValuePair("__VIEWSTATE", viewStateInput.attr("value")));
if(generatorInput != null)
params.add(new BasicNameValuePair("__VIEWSTATEGENERATOR",
generatorInput.attr("value")));
if(validationInput != null)
params.add(new BasicNameValuePair("__EVENTVALIDATION",
validationInput.attr("value")));
}
}
然后模拟登陆(其余的参数都是用firebug看出来的)
/**
* 登录
*
* @param url
* @param params
* @return
* @throws IOException
*/
public boolean login(String account, String password) throws IOException {
getHiddenValues();
if(params.size() > 0) {
HttpPost post = new HttpPost(redirectURL);
RequestConfig config = RequestConfig.custom()
.setSocketTimeout(connectTimeout)
.setConnectTimeout(socketTimeout)
.setRedirectsEnabled(false)
.build();
post.setConfig(config);
post.setHeader("User-Agent", userAgent);
// 账号
params.add(new BasicNameValuePair("TextBox1", account));
// 密码
params.add(new BasicNameValuePair("TextBox2", password));
// 学生
params.add(new BasicNameValuePair("RadioButtonList1", "%D1%A7%C9%FA"));
params.add(new BasicNameValuePair("Button1", ""));
params.add(new BasicNameValuePair("lbLanguage", ""));
post.setEntity(new UrlEncodedFormEntity(params, "GBK"));
CloseableHttpResponse response = client.execute(post);
// 获取响应状态码
int status = response.getStatusLine().getStatusCode();
// 302表示重定向状态
if(status == 302) {
return true;
} else
return false;
}
return false;
}
第一次执行登陆成功了:
第二次失败了。。。(看了看是500)
第三次无反应了(一直没返回,调试看了看,在第一次方法的response那里阻塞了,我都设置了超时了。。。)。。。
我是用SpringMVC框架做的,
这是控制器代码:
@Controller
public class IndexController {
@RequestMapping({"", "/"})
public ModelAndView index() {
ModelAndView mdv = new ModelAndView("index");
HttpUtil util = new HttpUtil();
try {
mdv.addObject("result", util.login("*******", "*********"));
} catch (IOException e) {
e.printStackTrace();
}
return mdv;
}
}
代码封装的很烂,勿喷!
java 模拟登录出现系统异常_很奇怪!Java web问题,模拟登陆教务系统刷新两次后就没反应了!...相关推荐
- Java爬取frame的课程表_从爬取湖北某高校hub教务系统课表浅谈Java信息抓取的实现 —— import java.*;...
原创文章与源码,如果转载请注明来源. 一.概述 整个系统用Java开发.我们现在要做的是类似于超级课程表.课程格子之类的功能:输入一个学生的教务系统账号.密码,得到Ta的课程表信息.点击进入课表查询, ...
- selenium模拟登陆教务系统
之前学习了selenium的安装和上手,现在来一次模拟登陆教务系统.有基础的同学可以直接拿走代码,去写抢课的脚本,但是估计效果不会蛮好.登陆页面如下 解除右键禁用 当然在此之前因为这个教务系统网站不能 ...
- python模拟登录网站_Python模拟登录淘宝都实现了,你还怕模拟登录?
文章转载自公众号 :裸睡的猪 , 作者 猪哥66 最近想爬取淘宝的一些商品,但是发现如果要使用搜索等一些功能时基本都需要登录,所以就想出一篇模拟登录淘宝的文章! 看了下网上有很多关于模拟登录淘宝,但是 ...
- (微信开发)PHP curl模拟登陆教务系统查询成绩查询课表实现微信查成绩差课表功能
</pre><p></p><pre name="code" class="php"></pre> & ...
- java模拟登陆教务系统_Java模拟登录高校教务系统
模拟登陆部分代码: 本次使用HttpClient 4.3进行开发, 该版本与之前的代码写法风格相差较大, 大家多留意下.需导入Jar包:commons-logging-1.1.3.jar / http ...
- java 必须try catch的异常_【java基础之异常】死了都要try,不淋漓尽致地catch我不痛快!...
@ 1.异常 1.1 异常概念 异常 :简单说就是不正常运行,最终导致JVM的非正常停止. 在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象.Java处 ...
- java中什么时候应用异常_生产Java应用程序中的十大异常类型-基于1B事件
java中什么时候应用异常 Pareto记录原理:97%的记录错误语句是由3%的唯一错误引起的 在最新的数据整理帖子之后,我们收到了很多反馈和问题,我们发现97%的记录错误是由10个唯一错误引起的 . ...
- 受检异常 非受检异常_这样设计 Java 异常更优雅,赶紧学
来源:Lrwinlrwinx.github.io/2016/04/28/如何优雅的设计java异常/ 导语 异常处理是程序开发中必不可少操作之一,但如何正确优雅的对异常进行处理确是一门学问,笔者根据自 ...
- java捕捉sql执行异常_如何捕获java.sql.SQLIntegrityConstraintViolationException?
我的应用程序使用JPA JavaDB,当我尝试持久存储违反约束的对象时,控制台上显示 SQLIntegrityConstraintViolationException. 可以,但是我无法捕获该异常,为 ...
最新文章
- Jenkins实现SVN+Maven+Java项目的持续集成
- XPath与多线程爬虫
- 用 Python 画圣诞树的 N 种玩法
- 圣诞节计算机老师贺卡祝福语,老师圣诞节贺卡祝福语
- 了解mysql文章_一篇文章带你深入了解MySQL 索引相关
- PHP中如何给日期加上一个月 加一周 加一天
- linux中memcpy实现分析,ARM64 的 memcpy 优化与实现
- idea jpa方法 自动提示_Spring Boot的自动配置、Commandline Runner
- kotlin和python哪个好_python替代品for一些java及kotlin功能(慎入啊慎入)
- 【转载】GitHub详细教程
- 10_android打包的过程
- 【Linux】tar命令各参数详解
- Altium20版本快速批量修改Comment使之与Value相同
- 【STM32HF429的DSP教程】第40章 STM32F429的FIR带阻滤波器实现(支持逐个数据的实时滤波)
- 域名绑定SSL阿里云免费证书
- 十进制100转换成八进制是多少?
- [清风数学建模]层次分析法(AHP)笔记及代码实现
- [JZOJ6355] 【NOIP2019模拟】普 24/100
- 浅析Margin和Padding属性
- 海康威视人脸识别门禁系统对接