最近在利用业余时间做一款Android版的本地交通违章查询软件,记录一下在开发过程中遇到的种种问题。
第一次做和网络有关的程序(之前YY开发饭否客户端,无疾而终),免不了又要查阅一番资料。对于Android开发网络应用程序,使用的方法很多,我这次采用Apache的HttpClient类来处理,因为比较符合我的要求,而且使用起来比较方便。悲剧的是,网上充斥着大量3.X版本的HttpClient应用示例,而Android使用的是HttpClient4.X版本的,直接导致网上大量代码无法测试与使用。好在我用到的HttpClient功能不是很多,查阅了一下API勉强搞定。
这个交通违章查询网站最关键的一点就是它采用了防盗链措施,如果直接POST参数数据到查询网址,直接返回500错误。要想让程序成功运行,只能模拟浏览器的动作,要模仿就必须要对浏览器动作进行分析。这里推荐大家一个强力抓包分析工具HttpWatch。它可以很方便的作为IE的插件显示,全面分析浏览器所有动作,包括POST数据,Cookie、头文件等等内容,灰常强大易用!经过分析,发现该网站是对头文件中“referer”参数的值来判断是否盗链行为的。于是利用new HttpGet(“http://XXX”).setHeader( “referer”, “http://source.html”)的方法来对referer参数进行设置,以模拟请求来源。在成功访问网站并取得Cookie之后,就可以正常POST参数,并取得违章数据反馈网页了。
再接受到反馈的网页内容之后,接下来就是用Jsoup(很好用很强大!)这个开源java包来处理、分析和提取网页内容中的相关数据了。
发表回复