资源描述
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,ANDROID,客户端与服务器端的通讯,之,环境搭建,1,服务器端的搭建,考虑了很久,综合各种因素决定服务器端用的搭配如下,1,服务器用开源的,tomcat,版本,tomcat-6.0.20,,,JDK1.6,2,技术框架用现在比较流行的,SSH(Struts2,Spring,Hebernate),主要是用,Struts2,,要用到,Struts2,里,JSON,,因为服务器端传送数据给客户端用的是,JSON,来传输。,3,数据库:,oracle-,需要的包,ojdbc6.jar,4,开发工具:,Myeclipse 7.5,以上,5,用,JSON,传输,至少需要,JSON,的包有:,1 commons-lang.jar,、,2 commons-beanutils.jar,、,3 commons-collections.jar,、,4 commons-logging.jar,、,5 ezmorph.jar,、,6 json-lib-2.2.2-jdk15.jar,其它包不必赘述。,6,需要在,struts.xml,修改文件如下:,2,服务器端的搭建,3,服务器端的搭建,上述,struts.xml,文件主要修改两处:,1 extends,的值改为,json-default,默认为,struts-default,即:,2,需要设置返回类型为,JSON,即:,修改这两处即可,4,服务器端的搭建,Action,需要现实两个接口,一个是,ServletRequestAware,,另一个是,ServletResponseAware,,并且实现它们的两个方法,如下,setServletRequest,和,setServletResponse,关键代码:,public class LoginAction extends ActionSupport implements ServletRequestAware,ServletResponseAware ,HttpServletRequest request;,HttpServletResponse response;,public void setServletRequest(HttpServletRequest arg0),this.request=arg0;,public void setServletResponse(HttpServletResponse arg0),this.response=arg0;,5,ANDROID,客户端环境搭建,1,开发工具:,Eclipse,3.3,或,3.4,,,JDK 6.0,2,安装,Eclipse,插件,(ADT),3,安装,SDK,4,安装,ANT,用于发布,apk,应用程序(可选),5,环境变量配置如下:,Android_SDK_HOME,:解压后的,sdk,目录,Eg.Android_SDK_HOME,:,D:android-softworeandroid-sdk-windows,ANT_HOME:,解压后的,ant,目录,Eg.ANT_HOME:D:android-softworeapache-ant-1.7.1;,6,ANDROID,客户端环境搭建,1 classpath,的配置,Classpath:.;D:android-softworeapache-ant-1.7.1bin;D:android-softworeapache-ant-1.7.1libant.jar;F:workjdklibdt.jar;F:workjdklibtools.jar;,我的,jdk,解压在,F:workjdk,JAVA_HOME:F:workjdk,Path:F:workjdkbin;D:android-softworeapache-ant-1.7.1bin;D:android-softworeandroid-sdk-windowstools;,7,Android,向服务器端发送请求,1,向服务器端发送请求需要用到这几个类:,HttpClient,,,HttpPost,HttpResponse,HttpClient httpClient=new DefaultHttpClient();,HttpPost request=new HttpPost(new URI(url);,url,为请求的地址,request.setEntity(new UrlEncodedFormEntity(NameValuePair,,,HTTP.UTF_8);,NameValuePair:,发送给服务器的数据,HTTP.UTF_8,为编码方式,/,发送请求,返回一个响应,HttpResponse respnose=httpClient.execute(request);,这个请求就发送到服务器端了。,接下来就是接收数据,/,得到返回数据,8,客户端获取数据,1,在获取数据之前要进行判断,response.getStatusLine().getStatusCode(),如果这个值等于,200,说明成功,然后可以通过,response.getEntity().getContent(),返回流进行操作。,Eg.,StringBuilder sb=new StrngBuilder();,if(response.getStatusLine().getStatusCode()=200),BufferedReader bufferedReader2=,new BufferedReader(,new InputStreamReader(response.getEntity().getContent();,String str=,null;,while(str=bufferedReader2.readLine()!=null),sb.append(str);,9,向服务器发送信息,1,可以用,NameValuePair,这个类,这个类是像,Map,一样的,(key,value),键值对,然后邦定到前面的请求实体里面去,,httpRequest.setEntity(nameValuePari,HTTP.UTF_8);,服务器端可以用,request.getParameter(key),获取数据,关键代码如下:,Lis,t nameValuePair=new ArrayList();,httpRequest.setEntity(nameValuePari,HTTP.UTF_8);,public void addNameValuePair(String key,String value),nameValuePair.add(,new BasicNameValuePair(key,value);,10,返回,JSONObject,对象数据模型,public JSONObject getJSON()throws Exception,return new JSONObject(sb);,Sb:,为返回的信息,存放在,StringBuilder,里,如果,sb,里面存放的是,JSONArray,数组的字符串,可以把它转换为,JSONArray,再操作,转换语句为:,JSONArray array=new JSONArray(sb);,现在就可以对它们为所欲为的操作了。,11,
展开阅读全文