最近一个开发项目用到了图书馆的一些数据,图书馆用的系统又没提供数据接口,所以老规矩,用HttpClient和Jsoup这两大开源工程上,用Android手机来模拟图书馆查询的请求与响应,
网站是学校的图书馆网:lib.gdou.edu.cn
第一步:分析并模拟网站的请求与响应
工具就不用介绍了,百度一大把,有些浏览器还自带,按一下你的F12,看有没有?~_~
首先是搜索的页面的分析,其他的同理:
输入关键字后得到,在后台扑获的数据为
Request URL:http://210.38.138.1:81/search.aspx Request Method:POST Status Code:302 Found <font color="#00f000">Request Headersview source //http请求头部分</font> Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Charset:GBK,utf-8;q=0.7,*;q=0.3 Accept-Encoding:gzip,deflate,sdch Accept-Language:zh-CN,zh;q=0.8 Cache-Control:max-age=0 Connection:keep-alive Content-Length:5273 Content-Type:application/x-www-form-urlencoded Cookie:ASP.NET_SessionId=sls3z2f2bux2mbbmin5hiv55; sulcmiswebpac=B0A84B140CE5D6A7A4E6FCBC672F3C68117288906D6A6FB1391C78220BFDE5F884CF686A3C2AB0933C93CB6237BA2A0281BE8A2EA3D43775BF0C7E718904A5385EB7CA5C3CD7375266E20498A647065205DF37BE7C48B395AC7A6D8E22DFFC06 Host:210.38.138.1:81 Origin:http://210.38.138.1:81/search.aspx User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.46 Safari/535.11 <font color="#00f000">Form Dataview URL encoded //用post提交的表单数据</font> __VIEWSTATE: //这里一长串的数据被我省略了,要看自己抓一下就可以了,这串没弄明白是提交上去干什么的,不知是不是用来保存数据的,等高手解释吧 ctl00$ContentPlaceHolder1$splb:ANYWORDS ctl00$ContentPlaceHolder1$keywordstb:java ctl00$ContentPlaceHolder1$searchbtn:快速检索 ctl00$ContentPlaceHolder1$deptddl:ALL ctl00$ContentPlaceHolder1$depthf:ALL <font color="#00f000">Response Headersview source //http响应的数据</font> Cache-Control:private Content-Length:243 Content-Type:text/html; charset=utf-8 Date:Mon, 25 Jun 2012 02:20:34 GMT Location:/searchresult.aspx?anywords=java&dt=ALL&cl=ALL&dp=20&sf=M_PUB_YEAR&ob=DESC&sm=table&dept=ALL //302重定向到这个http里,所以要提交查找图书,直生成这个URI就行了,然后提交到服务器上面,就可以省去前面的请求与响应了 PSP:CP=CAO PSA OUR Server:Microsoft-IIS/6.0 X-AspNet-Version:2.0.50727 X-Powered-By:ASP.NET
相关链接:http://www.eoeandroid.com/thread-180939-1-1.html