近两天在研究如何android客户端如何与服务端通信,查阅了资料翻看了许许多多的博客,发现虽然实现起来可能并不困难,可是其中还是有许许多多的小细节需要注意。
首先是环境的搭建及所需要的包,有以下几点需要注意: 搭建服务端首先需要搭建好环境,下载好tomcat,jdk,eclipse后正确配置路径。
java web项目中访问数据库需要下载相应的数据库驱动程序,连接代码与java类似。 在服务器中使用JSON相关类时,也需要导入相应的包才能够正常使用。 在写代码的过程中也发现了许多小问题,我总结了以下几点:
1.访问网络问题。
1>.android并不能在主线程中直接访问网络。
由于访问网络需要时间,如果在主线程中直接访问网络,请求失败的话则无法往下执行,非常容易出现超时现象。因此,如果需要用到访问网络的服务时,需要新开一个线程执行访问网络这一任务。
2>.新开的子线程需要通知主线程才能够正常执行数据更新。
虽然android主要是基于java进行的开发,但和java仍然有些不同。当新建一个子线程时,需要建立相关类将主线程与子线程连接起来,才能够正常更新、获取数据。
3>.访问自己搭建的服务端时注意访问地址
我个人使用的是基于tomcat服务器的服务端,当android访问服务端时,访问地址中的ip地址不可写localhost.android中的localhost代表的并不是主机ip地址,因此写入正确的主机ip地址,才可以正常访问服务端。
关于服务端的搭建,我尚在摸索当中。 但整个客户端服务端的交互按我理解大致如下: 客户端发出请求->服务端响应请求->服务端访问数据库获取数据->服务端以json格式将数据传输给客户端->客户端解析数据->客户端将数据显示在APP界面中。
在获取服务端的数据时,我无法访问到传输数据的servlet资源,但可正常访问服务端写的jsp界面,此问题尚未解决,望指点,我也会继续寻找解决的方法。
2016.4.14 续:
无法访问servlet资源是由于无法解析json格式数据。如果在项目中导入json相关包后,仍然无法正常解析,则可将相关包复制到关联的tomcat包的lib目录下,我用此方法解决了问题。
此外,注意电脑的ip地址是固定ip还是流动ip,否则可能出现网络错误。