大家还,之前发过帖子,因为现在还有几个疑问,所以重新发帖子,请大家见谅
我是想实现用Android客户端登陆学校的校园管理系统获取数据,但是我post密码帐号上去后获得的是 <script>top.location.href='/sise/index.jsp'</script> 而'/sise/index.jsp'这个JSP是我们校园信息管理系统登陆后的页面名称
我现在的思路是,登陆校园信息管理系统,获取其中一个页面的课程表的html数据,然后解释html,获取课程放在Android端 我有几个疑问。
1.按照我的理解和Http协议,我post数据给一个web端,web端Response给我的应该是一些html代码,或者xml数据,或者json数据,但是返回的却是我不能理解的数据。请问是什么原因呢?
2.我post完帐号密码后,我的理解是服务端返回数据以后,客户端和服务端会断开连接,那么我是不是应该在post密码帐号的时候也把我需要获取数据的网页也post上去,但是应该怎么把一个URL也post上去,并且获得我想要的这个URL的数据?。因为我现在post返回的是/sise/index.jsp',这个也不是我想要的页面,也获取不了任何数据。3.难道我的思路是错的?还是有其他方法能实现?跪求各位指点,因为这个是我的毕业设计- -学Android不长时间,请大家见谅。

解决方案 »

  1.   

    网站的登陆页面一般是采用cookie的形式,这个时间有效期是当前网页不能关闭,也就是第一次http请求的那个tcp连接。而网站的登陆页面流程是:客户端建立tcp连接,向服务器发送登陆请求,服务器接收该请求,会返回一个转向的URL地址,客户端必须要用原先的tcp连接,再次发送获取课程列表的请求,才能正常登陆。而采用android已有Http协议的类,一次execute就是一次tcp连接,所以登陆请求,拿到服务器转向的URL地址,再次请求通常无法正常登陆。
    解决的办法,
    1:采用Socket,用一个tcp通道。(没有验证过)
    2: http协议的body是你自己定义的一个协议,该协议可以用xml写。客户端请求,发送账号和密码。服务器处理这个请求,服务器返回的内容包含了你成功登陆以后的可访问课程页面的URL地址。客户端解析拿到该URL地址,再次请求此地址,拿到你最终的课程信息数据。这里的难度在与服务器能够返回课程页面的实际URL地址,这个需要服务器专门开接口处理。(已验证过,可行)