这段时间学习了一下使用jsoup来解析网页,也是看了下学校的正方教务系统,因为这个正方教务系统的各种不爽,不知道为什么还是那么多学校用这个系统呢?每到选课什么的就死啦死啦的,从它的网页上各种命名来看,简直就和我们这些小菜鸟一样o(╯□╰)o
使用AndroidHttpClient 而不是使用HttpClient,怎么说AndroidHttpClient也是SDK中自带的,基于HttpConnection,所以来说性能上来说应该比较好吧.
因为不熟悉使用这个强大的工具导致走了很多弯路,浪费了很多时间 ,很多参数没有像new 一个DefaultHttpClient简单,AndroidHttpClient的参数需要手动设置一下才好,比如说我在java 工程中使用的是HttpClient,我也没设置什么参数,直接拿来就用,它内部已经帮我们处理了很多细节问题,像重定向,,有时候我都不知道他重定向干嘛去了,经常获取不到我需要的内容.在Android 工程中 ,使用AndroidHttpClient 默认不会自动重定向,需要手动设置,还有忘记设置各个header导致各种问题.
此次任务是使用AndroidHttpclient来获取指定网站的数据内容,包括模拟各种post,get等请求.然后交由jsoup工具来解析出我需要的内容,比如课表查询,用户信息,学生成绩等...
当然在这之前对网站的抓包分析是不可少的,我就使用了最简单的工具,Google浏览器和它自带的工具,特别注意这段中间的一段字符串(24位),搞不懂原理,这个网站怎么抓也抓不到cookie,
1.首先的登录进去才行,我们知道一般网站都会设置个验证码什么的,所以我就想了各种办法来尝试是否可以直接不要验证码登录呢,可惜太难搞了,还是老老实实自己填写吧,貌似那个叫什么orc的可以自动识别类似的验证码的.
根据这个验证码地址找到链接,http://jwgl.hstc.edu.cn/(oco15si4snyeb04510vu0045)/CheckCode.aspx ,直接访问这个就是验证码了,但是我们特别需要获取到中间的那段字符串,它是每次随机产生的,很像cookie的工作,后面的访问都需要这段,
一开始我是直接固定了一段24位的字符串给他,也能正常登陆进去,但是获取各种信息的时候就不能了.所以还得从访问http://jwgl.hstc.edu.cn/CheckCode.aspx这个地址后会重定向到一段新的地址,这个地址中间就有了24位字符串了.然后根据这个字符串加入首页来模拟登陆. 使用AndroidHttpClient获取到这个网址的响应内容,经过重定向后得到一个InputStream,然后让它显示到ImageView上,我在测试的时候经常接收不到响应的输入流,可能是哪里出问题了,在2.3系统上跑还很正常,在4.2上就经常没内容了.
然后还是各种用户输入登录的过程了.
代码就不贴了,放上连接,目前该项目正在进行中,欢迎各位前来指导.