先讲一下功能,用户输入用户名、密码后,调用HttpPost像远程计算机发送Http请求,服务器端Hibernate+Struts,容器用的Tomcat7.0,将返回一个XML给Android,其中包含登陆验证信息。
没有图片不是我的风格,下面上几张图片,虽然这一章的讲解事关UI的代码不多。
下面根据功能需求,讲一下代码规划,点击界面上的登陆按钮后,将开启一个通信线程,一个外在计步器设为0,当通信失败则计步器累加,计步器达到3时向用户提示网络异常。通信线程内部试用HttpPost将用户信息收集起来传给远方服务器,服务器端的代码涉及J2EE,此处不表,总之就是Hibernate+Struts+dom4j,生成了一个XML,这个XML的格式有如下两种:
1.登陆失败:
2.登陆成功:
下面是通信线程的源代码,注释很详细
上面那段代码主要是通信线程,通信线程获取返回值后,将产生一个Message发往handler_chk_user,下面是这个handler的代码:
使用DOM解析XML流,并且构造一个User对象的方法如下在XMLFactory.getUserByXML这个函数中,User类是一个基本的POJO类,或者叫VO类,普通的getter&setter方法即可,此处省略,将DOM解析XML的代码贴出来:
至此完成整个HttpPost的发送请求,获取XML响应,DOM解析XML,做出UI反馈的步骤,本例的XML文档非常小,所以用DOM解析表示无鸭梨,如果XML文档很大,或者反馈给Android的XML文档只需要其中的一两个信息时,建议使用SAX解析,不过那样要编写很多消息响应函数,各有利弊。