Android手机客户端与Web服务器的通信

合集下载

移动应用开发中的服务端与客户端通信

移动应用开发中的服务端与客户端通信

移动应用开发中的服务端与客户端通信随着智能手机的普及和移动互联网的快速发展,移动应用开发已经成为当今IT 行业最热门的领域之一。

而在移动应用的开发过程中,服务端与客户端通信的问题也成为了一项重要的技术挑战和研究方向。

本文将从服务端与客户端通信的基本概念、常见的通信方式、技术难题和未来发展趋势等方面进行论述。

一、基本概念在移动应用开发中,服务端与客户端通信是指移动设备上的应用程序通过网络与服务器进行数据交互的过程。

通过服务端与客户端通信,用户可以实现登录、注册、数据交换、消息推送等功能。

服务端通常由服务器端的程序控制,而客户端通常是用户手机上的应用程序。

二、常见的通信方式1. HTTP通信HTTP通信是一种基于客户端/服务器模型的通信方式,常用于Web应用开发中。

在移动应用开发中,客户端通过HTTP协议向服务器发送请求,并由服务器返回相应的数据。

这种方式简单易用,但由于HTTP协议的特性,无法实现实时性较强的应用需求。

2. WebSocket通信WebSocket是一种全双工通信协议,允许客户端和服务器之间进行实时的双向通信。

WebSocket通信可以在不同平台和不同浏览器上使用,并且具有较低的网络延迟。

在移动应用开发中,WebSocket通信可以实现实时聊天、在线游戏等实时性较强的功能。

3. Socket通信Socket是一种基于网络的通信方式,可以实现客户端和服务器之间的实时数据交换。

在移动应用开发中,Socket通信通常用于实现推送服务和消息通知等功能。

但由于Socket开发相对复杂,需要处理很多底层网络操作,因此在应用开发过程中通常使用较少。

三、技术难题在服务端与客户端通信的过程中,还存在一些技术难题需要解决。

1. 数据传输安全在移动应用开发中,保障数据的传输安全是一个重要的问题。

客户端和服务器之间的通信过程中,可能存在数据被截获、篡改或者伪造的风险。

因此,需要使用加密算法和安全证书等方式来保证数据的安全传输。

android调用C#的webservice与服务端进行通信(sqlserver)

android调用C#的webservice与服务端进行通信(sqlserver)

这两天由于工作需要,学习了下android通过C#的webservice与服务端进行数据通信(sqlserver)。

中间遇到几个问题,总结下,以备后期使用时注意。

Android端调用webservice的代码:/*** 上传设备状态信息信息** @param data 打包好的数据* @return 成功与否的相关字符串*/public static String uploadLocation(String data) {METHOD_NAME = "UploadLocation";try {SoapObject soapObject = new SoapObject(NAMESPACE, METHOD_NAME);PropertyInfo propertyInfo = new PropertyInfo();propertyInfo.setName("LocationInfo");propertyInfo.setValue(data);soapObject.addProperty(propertyInfo);SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);envelope.dotNet = true;envelope.setOutputSoapObject(soapObject);HttpTransportSE httpTranstation = new HttpTransportSE(URL);httpTranstation.debug = true;httpTranstation.call(NAMESPACE + METHOD_NAME, envelope);Object result = (Object) envelope.getResponse().toString();if (result != null) {Log.i("WebserviceControlClass", result.toString());return result.toString();}return "返回数据为空";} catch (Exception e) {e.printStackTrace();Log.i("WebserviceControlClass", "设备信息上传出现异常" + e.toString());return "出现异常";}}需要注意的地方:1.propertyInfo.setName("LocationInfo");参数要与webservice方法中参数保持一致,否则获取不到数据。

Android手机客户端与Web服务器的通信

Android手机客户端与Web服务器的通信

1.Android手机访问Web服务器大多数中间件技术开发人员熟悉如何用计算机浏览器访问互联网,浏览器的主要作用是给互联网的Web服务器提交数据、验证数据和解析显示数据。

其工作原理是通过Http协议.提交数据用GET或者POST方法,客户端的数据通过浏览器网页提交给web应用服务器,应用服务器通过Web页面接收各种不同类型数据,将数据通过服务器的Servlet子类Http Servlet对象提交给服务器端处理逻辑.服务器逻辑将接收到的数据按照客户端的要求在Web服务器端进行运算,再将运算的结果返回给客户端浏览器进行解析和显示。

这里关键是Web服务器端的Servlet.它是服务器和客户端交互据的服务器端端口,即所有客户端的数据都要通过Servlet提交给Web服务器.所有要返回给客户端的数据都要通过Web服务器端的Servlet响应给客户端。

在实际应用的服务器端,创建Servlet的子类对象HttpServlet (HttpServletRequest和 HttpServletResponse),分别用来接收客户端的数据和将数据返回给客户端。

现在的问题就在Android手机终端.如何能够把客户的数据通过手机界面提交给Web服务器? Android 手机终端访问Web服务器的技术架构是怎样的?又如何能够在手机终端把web服务器响应的数据按照服务器的不同数据类型恢复原型?这就是下面要解决的问题。

1.1 手机客户端向Web应用服务器发送请求信息以实际开发的Android手机终端登录功能为案例介绍如何利用Sun公司提供的 java 数据流和过滤流结合Android提供的API提取Web服务器端不同类型的数据。

1) 首先引用所需要的各种API在Android手机终端开发应用程序时.首先需要利用Google和Sun公司提供的必要类包(API),包括http 通信协议类org.apache.http,*消息类org.apache.http.Message.*数据流类java.io.*android.app.Activity等。

移动应用开发中的客户端与服务器通信方法

移动应用开发中的客户端与服务器通信方法

移动应用开发中的客户端与服务器通信方法随着移动互联网的快速发展,越来越多的人开始使用移动应用来满足他们的需求。

而移动应用的开发不仅仅局限于简单的功能实现,还需要与服务器进行数据交互,以提供更好的用户体验。

在这篇文章中,我们将讨论移动应用开发中的客户端与服务器通信方法。

一、基于HTTP的通信方式在移动应用开发中,最常见的客户端与服务器通信方式之一是基于HTTP协议的。

HTTP是一种用于传输超文本的协议,它通过客户端和服务器之间的请求和响应来进行通信。

在这种通信方式中,客户端通过发送HTTP请求来获取服务器上的数据,服务器在接收到请求后会返回一个HTTP响应,并在响应中包含需要的数据。

客户端可以通过解析响应中的数据来实现相应的功能。

基于HTTP的通信方式具有简单、灵活、跨平台等优势,因此得到了广泛应用。

同时,使用HTTP的通信方式也可以充分利用现有的服务器资源,提高开发效率。

二、RESTful API随着移动应用的兴起,RESTful API成为了开发中的热门技术。

RESTful API是一种基于HTTP协议,并符合REST原则的API设计风格。

REST是Representational State Transfer的缩写,它是一种设计风格,旨在构建可伸缩的网络应用。

RESTful API通过定义不同的URI来构建不同的资源,通过不同的HTTP方法来对资源进行操作,实现了客户端与服务器之间的通信。

使用RESTful API的好处是它具有良好的可读性和可维护性,提供了一种统一的接口风格,易于开发和维护。

而且RESTful API还可以通过HTTP的缓存机制来提高性能,减少服务器的负载。

三、WebSocket除了基于HTTP的通信方式外,还有一种常见的客户端与服务器通信方式是WebSocket。

WebSocket是一种全双工、双向通信的协议,它允许客户端和服务器之间进行实时的通信。

在使用WebSocket进行通信时,客户端和服务器之间先要建立一个WebSocket 连接,然后可以通过该连接进行数据的传输。

Android手机客户端和服务器交互开发实例

Android手机客户端和服务器交互开发实例

本文介绍了如何使用Android搭建客户端,实现手机和服务器的交互。

让我们了解如何采用SSH框架,把服务器端的信息用JSON的形式发送到手机端。

AD:笔者以前是学的Java EE,由于项目需要要开发Android,所以临时补了一个多星期,主要是手机端和服务器端交互,双向开发的。

首先在服务器端,我采用的是SSH框架,struts 2集合了JSON插件,服务器和客户端的信息交互采用的JSON来传输,由于在服务器端用了Struts 2,所以我就用装了一个JSON插件。

这样,很轻易的就把服务器端的信息用JSON的形式发送到了手机端。

以下是代码:首先,在服务器端搭建好SSH框架,具体细节就不在陈述。

struts.xml配置如下:1.<packagename="login"extends="json-default">2.<actionname="login"class="com.jclick.test.LoginAction"method="login">3.<resulttype="json"><paramname="includeProperties">result</param></result>4.</action>5.</package>6.7. <packagename="login"extends="json-default">8. <actionname="login"class="com.jclick.test.LoginAction"method="login">9. <resulttype="json"><paramname="includeProperties">result</param></result>10. </action>11. </package>手机端的代码如下:首先,手机端有一个缓存类,主要用于缓存一些手机端需要访问的数据,这样的好处是可以达达节省手机和服务器的交互,用单例实现的:1.packagecom.jclick.cache;2.er;4.5.publicclassCache{6.7.privateUserUser;8.9.privateCache(){10.11.}12./**构造单例*/13.Private static class CacheHolder{14.Private static final CacheINSTANCE=newCache();15.}16.Public Cache getInstance(){17.returnCacheHolder.INSTANCE;18.}19.publicUsergetUser(){20.returnUser;21.}22.publicvoidsetUser(UserUser){er=User;24.}25.26.}27.28.packagecom.jclick.cache;29.er;31.32.publicclassCache{33.34. privateUserUser;35.36. privateCache(){37.38. }39./**构造单例*/40. privatestaticclassCacheHolder{41. privatestaticfinalCacheINSTANCE=newCache();42. }43. publicCachegetInstance(){44. returnCacheHolder.INSTANCE;45. }46. publicUsergetUser(){47. returnUser;48. }49. publicvoidsetUser(UserUser){er=User;51. }52.53.}接着开始书写手机端的协议,用户向服务器发送请求,同时服务器反馈给手机端信息的:1.packagecom.jclick.protocol;2.3.importjava.io.BufferedReader;4.importjava.io.InputStreamReader;5.importjava.util.ArrayList;6.importjava.util.List;7.8.importorg.apache.http.HttpResponse;ValuePair;10.importorg.apache.http.client.HttpClient;11.importorg.apache.http.client.entity.UrlEncodedFormEntity;12.importorg.apache.http.client.methods.HttpPost;13.importorg.apache.http.impl.client.DefaultHttpClient;14.importorg.apache.http.message.BasicNameValuePair;15.importorg.json.JSONException;16.importorg.json.JSONObject;17.18.publicclassBaseProtocol{19.privateStringBuildersb=newStringBuilder();20.21.privateHttpClienthttpClient;22.privateHttpPosthttpRequest;23.privateHttpResponseresponse;24.25.privateList<NameValuePair>nameValuePair=newArrayList<NameValuePair>();26.27.BaseProtocol(){28.httpClient=newDefaultHttpClient();29.}30.31./**32.*向服务器端发送请求33.*34.*@paramurl35.*@throwsException36.*/37.protectedvoidpack(Stringurl)throwsException{38.httpClient=newDefaultHttpClient();39.httpRequest=newHttpPost(url);40.41.httpRequest.setEntity(newUrlEncodedFormEntity(nameValuePair));42.response=httpClient.execute(httpRequest);43.}44.45./**46.*得到返回数据47.*48.*@paramurl49.*@return50.*@throwsException51.*/52.protectedvoidparse()throwsException{53.//TODO状态处理50020054.if(response.getStatusLine().getStatusCode()==200){55.56.BufferedReaderbufferedReader2=newBufferedReader(57.newInputStreamReader(response.getEntity().getContent()));58.for(Strings=bufferedReader2.readLine();s!=null;s=bufferedReader259..readLine()){60.sb.append(s);61.}62.}63.}64.65./**66.*向服务器发送信息67.*68.*@paramkey69.*@paramvalue70.*/71.publicvoidaddNameValuePair(Stringkey,Stringvalue){ValuePair.add(newBasicNameValuePair(key,value));73.}74.75./**76.*返回JSONObject对象数据模型77.*78.*@return79.*@throwsJSONException80.*/81.publicJSONObjectgetJSON()throwsJSONException{82.returnnewJSONObject(sb.toString());83.}84.85.}86.87.packagecom.jclick.protocol;88.89.importjava.io.BufferedReader;90.importjava.io.InputStreamReader;91.importjava.util.ArrayList;92.importjava.util.List;93.94.importorg.apache.http.HttpResponse;ValuePair;96.importorg.apache.http.client.HttpClient;97.importorg.apache.http.client.entity.UrlEncodedFormEntity;98.importorg.apache.http.client.methods.HttpPost;99.importorg.apache.http.impl.client.DefaultHttpClient;100.importorg.apache.http.message.BasicNameValuePair;101.importorg.json.JSONException;102.importorg.json.JSONObject;103.104.publicclassBaseProtocol{105. privateStringBuildersb=newStringBuilder();106.107. privateHttpClienthttpClient;108. privateHttpPosthttpRequest;109. privateHttpResponseresponse;110.111. privateList<NameValuePair>nameValuePair=newArrayList<NameValuePair>(); 112.113. BaseProtocol(){114. httpClient=newDefaultHttpClient();115. }116.117./**118. *向服务器端发送请求119. *120. *@paramurl121. *@throwsException122. */123. protectedvoidpack(Stringurl)throwsException{124. httpClient=newDefaultHttpClient();125. httpRequest=newHttpPost(url);126.127. httpRequest.setEntity(newUrlEncodedFormEntity(nameValuePair));128. response=httpClient.execute(httpRequest);129. }130.131./**132. *得到返回数据133. *134. *@paramurl135. *@return136. *@throwsException137. */138. protectedvoidparse()throwsException{139.//TODO状态处理500200140.if(response.getStatusLine().getStatusCode()==200){141.142. BufferedReaderbufferedReader2=newBufferedReader(143. newInputStreamReader(response.getEntity().getContent())); 144.for(Strings=bufferedReader2.readLine();s!=null;s=bufferedReader2 145. .readLine()){146. sb.append(s);147. }148. }149. }150.151./**152. *向服务器发送信息153. *154. *@paramkey155. *@paramvalue156. */157. publicvoidaddNameValuePair(Stringkey,Stringvalue){158. nameValuePair.add(newBasicNameValuePair(key,value));159. }160.161./**162. *返回JSONObject对象数据模型163. *164. *@return165. *@throwsJSONException166. */167. publicJSONObjectgetJSON()throwsJSONException{168. returnnewJSONObject(sb.toString());169. }170.171.}接着是登陆协议,在这里我只是模拟登陆使用的一个类,仅供大家参考:1.packagecom.jclick.protocol;2.3.importorg.json.JSONObject;4.er;6.7.publicclassLoginProtocolextendsBaseProtocol{8.9.privatefinalstaticStringURL="http://localhost:8080/test/login";10.11.publicbooleancheckLogin(Userusr){12.try{13.pack(URL);14.parse();15.JSONObjectobj=this.getJSON();16.if(obj.getString("result").equals("failed")){17.returnfalse;18.}else{19.returntrue;20.}21.}catch(Exceptione){22. e.printStackTrace();23.returnfalse;24.}25.}26.27.}28.29.packagecom.jclick.protocol;30.31.importorg.json.JSONObject;32.er;34.35.publicclassLoginProtocolextendsBaseProtocol{36.37. privatefinalstaticStringURL="http://localhost:8080/test/login";38.39. publicbooleancheckLogin(Userusr){40.try{41. pack(URL);42. parse();43. JSONObjectobj=this.getJSON();44.if(obj.getString("result").equals("failed")){45. returnfalse;46. }else{47. returntrue;48. }49. }catch(Exceptione){50. e.printStackTrace();51. returnfalse;52. }53. }54.55.}然后是User实体类,主要用于保存用户信息:1.packagecom.jclick.bean;2.3.publicclassUser{4.privateStringusername;5.privateStringpassword;6.publicStringgetUsername(){7.returnusername;8.}9.publicvoidsetUsername(Stringusername){ername=username;11.}12.publicStringgetPassword(){13.returnpassword;14.}15.publicvoidsetPassword(Stringpassword){16.this.password=password;17.}18.19.}20.21.packagecom.jclick.bean;22.23.publicclassUser{24. privateStringusername;25. privateStringpassword;26. publicStringgetUsername(){27. returnusername;28. }29. publicvoidsetUsername(Stringusername){ername=username;31. }32. publicStringgetPassword(){33. returnpassword;34. }35. publicvoidsetPassword(Stringpassword){36.this.password=password;37. }38.39.}最后就是LoginActivity里边判断登陆的代码了,详细代码不再贴出来了,仅贴一个判断登陆的代码:1.privatevoidcheckedData(){ername=((EditText)findViewById(ername)).getText().toString();3.password=((EditText)findViewById(R.id.password)).getText().toString();4.eruser=newUser();er.setUsername(username);er.setPassword(password);8.LoginProtocollogin=newLoginProtocol();9.booleanresult=login.checkLogin(user);10.11.if(result){SpiderCache.getInstance().setUserSession(user);12.Toast.makeText(getApplicationContext(),"登录成功",1000).show();13.Intentintent=newIntent();14.intent.setClass(LoginActivity.this,WelcomeActivity.class);15.startActivity(intent);16.}else{Toast.makeText(LoginActivity.this,"密码或用户名不匹配,请重新输入!",1000).show();17.}18.}19.20. privatevoidcheckedData(){21. username=((EditText)findViewById(ername)).getText().toString();22. password=((EditText)findViewById(R.id.password)).getText().toString();23.24. Useruser=newUser();25. user.setUsername(username);26. user.setPassword(password);27. LoginProtocollogin=newLoginProtocol();28. booleanresult=login.checkLogin(user);29.30.if(result){ SpiderCache.getInstance().setUserSession(user);31. Toast.makeText(getApplicationContext(),"登录成功",1000).show();32. Intentintent=newIntent();33. intent.setClass(LoginActivity.this,WelcomeActivity.class);34. startActivity(intent);35. }else{ Toast.makeText(LoginActivity.this,"密码或用户名不匹配,请重新输入!",1000).show();36. }37. }以上代码为了跟大家分享一下,感觉手机端和服务器双向开发非常过瘾。

服务器和客户端通信

服务器和客户端通信

服务器和客户端通信在当今数字化的世界中,服务器和客户端之间的通信是支撑各种应用和服务的关键环节。

无论是我们日常使用的手机应用、浏览的网页,还是企业内部的信息系统,都离不开服务器与客户端之间高效、稳定且准确的通信。

让我们先从最基础的概念开始理解。

服务器,就像是一个强大的信息中心,它拥有大量的数据、处理能力和资源,能够为多个客户端提供服务。

客户端呢,则可以是我们手中的电脑、手机、平板等设备,它们向服务器发送请求,获取所需的信息或执行特定的操作。

比如说,当你在手机上打开一个购物应用,你的手机就是客户端,它会向服务器发送请求,比如获取商品列表、查看商品详情、进行下单等操作。

服务器接收到这些请求后,会进行相应的处理,然后将结果返回给客户端,也就是你的手机,让你能够看到最新的商品信息和订单状态。

那么,服务器和客户端是如何进行通信的呢?这其中涉及到多种技术和协议。

其中,最常见的就是 HTTP(超文本传输协议)。

当你在浏览器中输入一个网址,浏览器就会使用HTTP 协议向服务器发送请求,服务器则会根据请求的内容返回相应的网页数据。

在通信的过程中,数据的传输是至关重要的。

这些数据可能包括文本、图片、音频、视频等各种形式。

为了确保数据能够准确、完整地在服务器和客户端之间传输,需要对数据进行编码和压缩。

就像我们把一堆物品放进一个箱子里,如果不进行合理的整理和压缩,可能就装不下或者运输过程中会受损。

另外,安全也是服务器和客户端通信中不能忽视的一个重要方面。

毕竟,我们在通信过程中可能会涉及到个人隐私信息、支付信息等敏感内容。

因此,需要通过加密技术来保护这些数据,防止被不法分子窃取或篡改。

常见的加密方式有 SSL(安全套接层)和 TLS(传输层安全)协议,它们能够在数据传输过程中对数据进行加密和解密,确保数据的安全性。

为了提高通信的效率和性能,还会采用一些缓存机制。

比如说,客户端可能会将一些经常访问的数据缓存到本地,这样下次再需要时就不需要再次向服务器请求,从而节省了时间和网络资源。

移动应用开发中的客户端服务器通信

移动应用开发中的客户端服务器通信

移动应用开发中的客户端服务器通信随着移动互联网的飞速发展,移动应用已经成为人们日常生活中不可或缺的一部分。

然而,一个好的移动应用首先需要保证的是用户能够愉快地使用它。

而对于开发者来说,如何实现客户端与服务器之间的通信是至关重要的。

下面将从通信协议、数据传输以及数据安全几个方面讨论移动应用开发中的客户端服务器通信。

一、通信协议在移动应用开发中,通信协议通常使用HTTP协议,也有一些应用选择使用HTTPS协议。

HTTP协议能够满足大部分的应用需求,而HTTPS协议则更加安全一些,因为它使用了SSL/TLS加密传输数据。

这也是为什么有些支付类、金融类应用会选择使用HTTPS协议。

无论是HTTP协议还是HTTPS协议,它们都面临着一些问题。

首先,在HTTPS协议中,加密方式会增加数据传输的延迟,从而降低了通信速度;其次,HTTP协议无法保证数据传输的安全,容易被黑客截获并篡改数据。

因此,在实际应用中,根据具体需求选择合适的协议是非常重要的。

二、数据传输在移动应用开发中,客户端和服务器之间的数据传输有两种方式——同步和异步。

同步传输是指客户端请求服务器时,只有在服务器返回数据之后才能进行下一步操作。

这种方式简单易懂,但它的缺点也很明显:客户端需要等待服务器返回数据,如果服务器请求量大或者网络出现问题时,客户端的用户体验会受到很大的影响。

异步传输是指客户端请求服务器时,不需要等待服务器返回数据,而是直接进行下一步操作。

服务器返回的数据会通过回调函数等方式异步地传递给客户端。

相比同步传输,异步传输的优势在于客户端不需要等待服务器返回数据,从而提高了用户体验。

三、数据安全在移动应用开发中,数据安全是不能忽视的一个方面。

客户端和服务器之间的数据传输可能会受到黑客攻击,因此需要采取一些措施进行保护。

第一种方式是采用SSL加密。

SSL/TLS协议是目前最常用的一种加密传输协议,能够有效地保护数据传输过程中数据不被黑客攻击。

Android使用HttpURLConnection调用WebService接口

Android使用HttpURLConnection调用WebService接口

Android使用HttpURLConnection调用WebService接口在Android中,可以使用HttpURLConnection类来调用WebService接口。

HttpURLConnection是Java中用于发送和接收HTTP请求的基本类,而WebService是一种支持跨网络的远程调用技术,可以在不同平台之间进行通信。

HttpURLConnection可以通过HTTP协议与WebService接口进行通信。

下面是使用HttpURLConnection调用WebService接口的步骤:1. 创建URL对象:首先,需要创建一个URL对象,将WebService的URL地址作为参数传递给URL构造函数。

例如:``````2. 打开连接:通过URL对象的openConnection方法打开与WebService的连接。

该方法会返回一个HttpURLConnection对象,可以通过类型转换来获取具体的对象。

```HttpURLConnection connection = (HttpURLConnection)url.openConnection(;```3. 设置请求方法:使用setRequestMethod方法设置请求的方法,常用的方法有GET和POST。

GET方法用于获取WebService返回的数据,而POST方法用于向WebService发送数据。

```connection.setRequestMethod("POST");```4. 设置请求参数:如果使用POST方法发送数据,需要设置请求的参数。

可以通过设置connection的OutputStream来发送数据。

```connection.setDoOutput(true);DataOutputStream outputStream = newDataOutputStream(connection.getOutputStream();outputStream.writeBytes("param1=value1&param2=value2");outputStream.flush(;outputStream.close(;```5. 获取响应数据:使用getInputStream方法获取WebService的响应数据。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.Android手机访问Web服务器
大多数中间件技术开发人员熟悉如何用计算机浏览器访问互联网,浏览器的主要作用是给互联网的Web服务器提交数据、验证数据和解析显示数据。

其工作原理是通过Http协议.提交数据用GET或者POST方法,客户端的数据通过浏览器网页提交给web应用服务器,应用服务器通过Web页面接收各种不同类型数据,将数据通过服务器的Servlet子类Http Servlet对象提交给服务器端处理逻辑.服务器逻辑将接收到的数据按照客户端的要求在Web服务器端进行运算,再将运算的结果返回给客户端浏览器进行解析和显示。

这里关键是Web服务器端的Servlet.它是服务器和客户端交互据的服务器端端口,即所有客户端的数据都要通过Servlet提交给Web服务器.所有要返回给客户端的数据都要通过Web服务器端的Servlet响应给客户端。

在实际应用的服务器端,创建Servlet的子类对象HttpServlet (HttpServletRequest和 HttpServletResponse),分别用来接收客户端的数据和将数据返回给客户端。

现在的问题就在Android手机终端.如何能够把客户的数据通过手机界面提交给Web服务器? Android 手机终端访问Web服务器的技术架构是怎样的?又如何能够在手机终端把web服务器响应的数据按照服务器的不同数据类型恢复原型?这就是下面要解决的问题。

1.1 手机客户端向Web应用服务器发送请求信息
以实际开发的Android手机终端登录功能为案例介绍如何利用Sun公
司提供的 java 数据流和过滤流结合Android提供的API提取Web服务器端不同类型的数据。

1) 首先引用所需要的各种API在Android手机终端开发应用程序时.首先需要利用Google和Sun公司提供的必要类包(API),包括http 通信协议类org.apache.http,*消息类org.apache.http.Message.*数据流类java.io.*android.app.Activity等。

2)定义访问网站的URL
3)创建Android程序界面类创建一个手机界面,需要继承Android提供的Activity,在该类中创建提交给Web服务器的数据的 H ttpPost 对象。

覆盖Activity类的方法on—Create(Bundle b),创建事件监听器OnClickListener对象,在其中实现 onClick(View v)方法,再把该事件监听器注册到相应的事件源 loginB utton上。

4)创建HttpPost对象HttpPost对象的主要作用是将Android手机端的数据提交给Web应用服务器,为此Android提供了很好的AP I.这里就利用Android和Sun公司提供的这些类把需要提交给服务器的数据(NameValuePair对象)保存到一个List对象中。

5 )设置数据编码方式Android手机在将准备好的数据发送到Web服务器之前,需要对数据的编码进行规定,这样服务器在接收到这些数据后,就会根据发送过去的文字编码处理和显示。

6 ) 提交HttpPost对象和获取服务器HttpResponse响应数据完成
前面的工作,就该将数据提交给Web应用服务器了,在应用服务接收Android手机提交的数据后,经过处理,将要返回(响应)给Android 手机的数据打包到一个HttpRe-sponse对象中,发回给手机。

到此。

Android平台的通信任务已完成,即将Web服务器相应过来的数据交给了httpResponse对象,剩下来的工作就是如何将W eb 服务器响应过来的数据从httpResponse对象中取出。

1.2 手机终端提取服务器端的响应数据
1)获取响应服务的数据从Web服务器响应到手机终端的数据一般打包在一个字节数组中,关键是这个字节数组中可能包含了各种不同的数据类型,为此,需要采取Java数据流和过滤流的方法从字节数据中取出各种类型的数据。

这是需要实现的关键技术。

到此手机终端从Web服务器获取了所有类型的数据.剩下的任务就是将这些数据进一步交给Android手机终端View组件,在手机界面上显示给用户。

2 服务器端接收和响应Android手机终端请求
在Android手机终端发送请求后,接收请求的web服务器端会根据请求的数据信息进行运算,然后把运算结果响应给手机客户端。

下面介绍Web服务器如何实现这一过程的。

2.1采用http的Post方法接收数据
1) 引用所需API在Web端开发应用程序时,首先需要利用Sun公司提供的必要类包(API),包括数据流类java.io.*交互界面类java.utiL.* 数据通信端口类javax.servlet.*通信协议类javax.servlet.http.用Spring架构通过XM L文件注入数据对象类org.springfamework.web.context.*org.springframe-work.web.co ntext.support.*service.CustomerServiee等。

2 ) 创建Servlet类数据端口
创建Servlet对象就是创建了Web应用服务器和连接互联网上所用客户端通信设备的数据接收和发送端口。

3 )访问持久层检索数据
这里应用已经完善的Spring管理事务的对象方法来获取持久层的数据。

4 )创建输出流数据流对象这里创建的输出流对象主要是把响应的数据发送到手机端,由于可能是不同类型的数据,所以采用DataOutp utStream对象来处理,用输出过滤流对象将不同类型的数据返回手机终端。

2.2 配置服务器端组件集成文件(XML)
Web应用服务器端用到的是SSH架构技术,服务器的业务逻辑已经成熟,只需要将Spring的业务通过前述的Servlet进行封装.就可以
将所有的Spring管理的事物业务通过Servlet和Android手机进行交互,方法是在Spring的ApplicationContext.xm文件中增加相应的的配置即可,这样服务器响应给手机终端的数据处理部分完毕,一次交互过程完成。

相关文档
最新文档