为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

Android手机访问服务器的一种数据交互方法

2012-04-14 4页 pdf 296KB 37阅读

用户头像

is_815621

暂无简介

举报
Android手机访问服务器的一种数据交互方法 第 18卷 Vo1.18 第 9期 No.9 电子设计工程 Electronic Design Engineering 2010年 9月 Sept.2010 Android手机访问服务器的一种数据交互方法 刘 平 (西安财经 学院 网络与现代教 育技 术中心 ,陕西 西安 710061) 摘要 :通过对 Android手机访问 Web服务 器的 API的分析和 实践 ,提 出了一种解 决手机终 端和 Web服务 器交互提取 各种类型数据的清晰有效的方法,扩展了Android平台在访问We...
Android手机访问服务器的一种数据交互方法
第 18卷 Vo1.18 第 9期 No.9 电子设计工程 Electronic Design Engineering 2010年 9月 Sept.2010 Android手机访问服务器的一种数据交互 刘 平 (西安财经 学院 网络与现代教 育技 术中心 ,陕西 西安 710061) 摘要 :通过对 Android手机访问 Web服务 器的 API的分析和 实践 ,提 出了一种解 决手机终 端和 Web服务 器交互提取 各种类型数据的清晰有效的方法,扩展了Android平台在访问Web服务器进行交互时的解析数据能力,给移动商务 软件开发人员在开发数据交互实践过程提供了参考。 关键 词 :Android;手机终端 ;3G;数据 流;过滤流 ;Servlet;SSH架构;POST方法 ;GET方法;XML;数据库 中图分类号 :TP393.02 文献标识码 :A 文章编号 :1674—6236(2010)09一O096—03 Effective data interactive method from Android cell phone accessing W eb app server LIU Ping (Information&ModemEducation Technique Center,Xi’on Univers ofFinance andEconomics,Xi’an 710061,China) Abstract:Through the analysis and practice of Android API access to Web App Server,this paper puts forward a data in— teraetive method.which is clearly and effectively used to get the data of the different types from Web App Serve~ and ex— pend the data interactive ability between the cell phone and Web App Server,and also provide reference for those who is engaged in mobile business software development. Key words:Android;cell phone;3G;data stream;filter flow;servlet;SSH;POST;GET;XML;database 为了让手机用户能够在任何 时候 (Anytime)、任何地方 (Anywhere)、以任何方式(Anyway)查询企业所提供的服务 , 一 种 高效的办法就是将应用系统 的功能拓展到手机终端 ,手 机通 过移动网和互联 网访问企业 Web网站并处 理各 项业务 (移动商务系统 )。从市 场的角度来讲 ,将企业提供 的服务通 过现代的先进技术拓展到手机终端,是一项具有极大潜在的 市场需求。由此可见,能够给手机终端提供有效、便捷和清晰 地访 问 Web服务器数据 的方法在实际 中非常有用 。随着 3G 网络的使用,移动终端不再仅是通讯网络的终端,还将成为互 联网的终端。因此,移动终端的应用软件和需要的服务将会 有很大的发展空间。Google为此于 2007年 l1月推出 了一个 专为移动设备设计 的软件平台——Andmid.它是 一套真正意 义上的开放性 移动设备综合平 台,其包括操作系统 、中间件 和 一 些关键的平 台应用 (见图 1)。Android最大特点在于它是一 个开放的体系架构,具有非 常好 的开发和调试环境,而且还 支 持各种可扩展的用户体验.Android里面包含非常丰富的图 形组建,多媒体支持功能和非常强大的浏览器『l1。Android平 台的开放性等特点既能促进技术(包括平台自身)的创新,又 有助 于降低开发成本.还 可以使运 营商能非常方便地制定特 色化产 品,因此。它具有很大 的市场发展潜力。谷 歌的 Android 手机操作系统在发布以后.每年的 Android手机上市速度惊 人,预计在不久将来大有占据手机大份额市场的可能 ,An— droid手机应 用程序是 以 XML文件作为其界面和数据的描述 文件 .对于每一个组件和数据都有唯一的 R.java文件标识, 根据这些标识来加载和确定组件对象,进而通过事件来驱动 事务 。Android的重要技术是提供 了一套 API来解析这些 XML描述 文件 。编 写的程序 紧凑 、数据安全 ,界面 丰富 ,交互 模式多样化 ,应用程序架构清晰,同时也比较抽象,对开发人 员要求比较高。但是由于 Android发布的是新技术 ,难免在实 际应用中还存在发展的空间,有些方面还需要进一步完善, 需要在市场中不断开发新的技术结合 Android提供的API, 将开发的应用程序更加安全 、完美 和有效 。为此 ,笔者经过对 Android提供的API访问web服务器进行数据通信进行了系 统研究 。认为 Android提供的技术在框架上很大的优势 ,但 在 具体取数据和发数据的细节上还需要增加新的技术来弥补。 为此 .本 文笔者就开发 Android手机软件过程 中创建 的数据 交换和提取不同类型数据 的方法和过程进行 了阐述 ,为开发 者提供参考 。 1 Android手机访问 Web服务器技术架构 大多数中间件技术开发人员熟悉如何用计算机浏览器 访 问互联 网,浏览器 的主要作用是给互联网的 Web服务器提 交数据、验证数据和解析显示数据。其工作原理是通过 Http 协议 .提交数据用 GET或者 POST方法,客户端的数据通过 收稿日期:2010一O7—1O 稿件编号:201007036 基金项 目:国家科技部科技型 中小型企业技术创新基金 资助项 目((CA04)04C26216110880) 作者简介 :刘平(1959一 ),女 ,陕西佳县人 ,讲 师。研究方向 :嵌入式手机通信软件。 一 96— 刘 平 Android手机访问服务器的一种数据交互方法 图1 Android系统架构图 Fig.1 Android system architecture 浏览器网页提交给 web应用服务器,应用服务器通过 Web 页面接收各种不同类型数据 ,将数据通过服务器 的 Servlet子 类 HttpServlet对象提交 给服务器端处理逻辑 .服务器 逻辑将 接收到的数据按照客户端的要求在 Web服务器端进行运 算 ,再将运算的结果返 回给客户端浏览 器进 行解析 和显示 。 这里关键是 Web服务器端 的 Servlet.它是服务器 和客户端 交 互数据的服务器端端口,即所有客户端 的数据都要通过 Servlet提交给 Web服务器.所有要返回给客户端的数据都要 通过 Web服务器端 的 Servlet响应给客户端 。在 实际应用 的 服务器端,创建 Servlet的子类对象 HttpServlet c21(HttpServle。 tRequest和 HttpServletResponse),分别用来接收客户端的数 据和将数据返回给客户端。 现在的问就在 Android手机终端 .如何能够把客户的 数据通过手机界面提交给Web服务器?Android手机终端访 问Web服务器的技术架构是怎样的?又如何能够在手机终 端把 web服务器响应的数据按照服务器的不同数据类型恢 复原型?这就是下 面要解决的问题。 1.1 手机客户端 向 Web应用服务器发送请求信息 以实际开发的 Android手机终端登录功能为案例介绍如 何利用 Sun公司提供的 java数据流和过滤流结 合 Android提 供的API提取 Web服务器端不同类型的数据。 1)首先引用所需要的各种 API 在 Android手机终端开 发应用程序时 ,首先需要利用 Google和 Sun公 司提供 的必 要 类包 (API),包j ¨ hip通信协议下的类 org.apache.http. 手机 端端类 org.apache.hlI}一r ⋯. 消息类 org.apache.http.message.{ 数据流类 java.io.}交且 面类 java.util.},android.app.Activity 操作 描述 类 android.content. 键值 处 理类 android .Bundle; 日志类 android.util.Log显 示组 件类 android.view. 和 界 面类 android.widget. 等 。 2)定 义 访 问 网站 的 URL public class UriAPI{ public static final String ℃ustomer = “http://192.168.157.100:8028,JSHWDemo/servlet/ CustomerServlet”:l 3)创建 Android程序界面类 创建一个手机界面 ,需要 继承 Android提供的Activity类 ,在该类中创建提交给 Web 服务器的数据的 HttpPost对象 。覆盖 Activity类的方法 on— Create(Bundle b),创建事件监听器 OnClickListener对象,在其 中实现 onClick(View v)方法 ,再把该事件监听器注册到相应 的事件源 loginButton上。主要代码如下 : public class LoginAetivity extends Activity{ private static final int REQUES CODE=2; HttpPost httpRequest=new HttpPost(UriAPI.HTTPCustomer); Button loginButton; Button cancael; @Override public void onCreate(Bundle savedlnstanceState){ super.onCreate(savedlnstanceState); setContentView(R.1ayout.main); loginButton=(Button)findViewById(R.id./og/n); ,/注册监听器对象 loginButton.setOnClickListener(new OnClickListener()f CharSequence username=‘ : CharSequence password=“”; public void onClick(View v) { ,/准备 需要提交的数据 .从手机界面抓 取下来 EditText ev _ usemame=(EditText)findViewByld(R.id. //~eFno/nq); usernam e=ev _ username.getText(); EditText ev _ password=(EditText)findViewByld(R.id4Lw); password=ev _ password.getText(); 4)创建 HttpPost对象 HttpPost对象的主要作用是将 Android手机端的数据提交给Web应用服务器,为此 Android 提供 了很好 的 API.这里就 利用 Android和 Sun公 司提供 的 这些类把需要提交给服务器的数据(NameValuePair对象)保 存 到一个 List对象中 。主要代码如下 : if(!usemame.equals(“”)&&!password.equals(“”)){ ,/创建 HttpPost对象 HttpPost httpRequest=new HttpPost(UriAPI.HTTPCus tomer); Listparams=new ArrayList(); params.add (new BasicNameValuePair(“usemame”,user- name.toString())); params.add (new BasicNameValuePair(“password”,pass- word.toString())); params.add(new BasicNameValuePair(“flag”,“0”)); 5)设置数据编码方式 Android手机在将准备好的数据 发送到 Web服务器之前,需要对数据的编码进行规定 ,这样 服务器在接收到这些数据后,就会根据发送过去的文字编码 处理和显示.代码如下 : - 97- 《电子设计工程)2010年第9期 try{ httpRequest.setEntity(new UdEncodedFormEntity(params, H 几 .UTF _ 8)); 6)提 交 HttpPost对象和获取服务器 HttpResponse响应数 据 完成前面的工作,就该将数据提交给 Web应用服务器 了,在应用服务接 收 .Android手机提交 的数据后 ,经 过处理 , 将要返 回(响应 )给 Android手机 的数 据打包到一个 HttpRe— sponse对象 中 ,发 回给手机 ,代码如下 : HttpResponse httpResponse=new DefauhHttpClient().exe— cute(httpRequest); 】 )catch(ClientProtocolException e)e.printStaekTrace();} catch(unsupportedEncodingException e){e.printStackTraee ();} catch(IOException e){e.printStackTrace();l 到此 。Android平 台的通信任务 已完成 ,即将 Web服务器 相应过来的数据交给了 httpResponse对象 ,剩 下来 的工 作就 是如 何将 Web服务 器响应 过来 的数据从 httpResponse对 象 中取 出。 1.2 手机终端提取 服务器端 的响应数据 1)获取响应服务 器的数 据 从 Web服务器 响应到手机 终端的数据一般打包在一个字节数组 中,关键是这个字节数 组 中可能包 含 了各 种不 同的数据 类型 ,为此 ,需要 采取 Java 数据流和过滤流的方法从字节数据 中取出各种类型 的数据 . 这是本文介绍 的关键技术 .代码如下 : if(httpResponse.getStatusLine().getStatusCode()==200) { //利 用字节数组流和包装的绑定技术 byte1]data=new byte[204g]; /,先把从服务端来的数据转化成字节数组 data=EntityUtils.toByteA rray((HttpEntity)httpResponse. getEntity()); //再创建字节数组输入流对 象 ByteArrayInputStream bais=new ByteArrayInputStream(da.- ta); ,/绑定字节流和数据 包装流 DatalnputStream dis=new DataInputStream(bais); 将字节数组中的数据还原成原来的各种数据类型 .代码 如下 : user=new String(dis.readUTF()); 到此手机终端从 Web服务器获取 了所有类 型的数据 .剩 下的任务就是将这些数据进一步交给 Android手机终端View 组件I引,在手机界面上显示给用户 ,这方 面的不再赘述。 2 服务器端接收和响应 Android手机终端请求 在 Android手机终端发送请求后,接收请求的web服务 - 98- 器端会根据请求的数据信息进行运算,然后把运算结果响应 给手机客户端。下面介绍Web服务器如何实现这一过程的。 2.1 采用 http的 Post方法接收数据 1)引用所需 API 在Web端开发应用程序时 .首先需要 利用 Sun公司提供的必要类包 (API),包括数据流类 java.io. } 交互界面类 java.utiL. 数据通信端口类 javax.servlet.$通信协 议类 javax.servlet.http,. 用 Spring架构 通过 XML文件 注入数 据 对 象 类 org..springffamework.web.contexL{,org.springframe— work.web.context.support.*service.CustomerServiee等。 2)创 建 Servlet类数据 端 口 创建 Servlet对象就是创 建 了Web应用服务器和连接互联网上所用客户端通信设备的 数据接收和发送端 口,主要代码如下 : public class CustomerServlet extends HttpServlet{ public void doPost(HttpServletRequest request,HIttpServ- letResponse response) throws ServletException,IOException{ String username=request.getParameter(“usemame”); String password=request.getParameter(“password”); response.setC0ntentT e(C0Ⅳ删 咫 ); 3)访 问持 久层检 索数据 这 里应用 已经 完善 的 Spring 管理事务的对象方法来获取持久层的数据.主要代码如下: try{ customer=-cusDao.1ogin(usemame,password); if(customer!=nul1).[//登录成功 output.writeUTF(eustomer.getUsemame()); } else{//登录失败 output.writeUTF(“No”); } }catch(Exception e){e.printStackTmce();} 4)创 建输 出流数 据流对 象 这里创建的输 出流对象主要 是把响应的数据发送到手机端 ,由于可能是不同类型的数 据,所以采用 DataOutputStream对象来处理,用输出过滤流对 象I4]将不同类型的数据返 回手机终端 。主要代码如下 : DataOutputStream output=new DataOutputStream (re— sponse.getOutputStream()); output.writeUTF(“服务器端数据 :用户名 :”+usemame); output.writeUTF(“服务器端数据 :密 码 :”+password); output.writeInt(1); output.dose(); } 2.2 配置服务器端组件集成文件 (XML) Web应用服务器端用到的是 SSH架构阿技术 ,服务器的 业务逻辑已经成熟,只需要将 Spring的业务通过前述I~Servlet 进 行 封装 .就可 以将所 有 的 Spring管 理 的事 物 业务 通 过 Servlet和 Android手机 进行交互 ,方法是 在 Spring的 Appli— cationContext.xml文件@~JJnT面的配置 (下转第 102页) 《电子设计工程)2010年第9期 信道中加入指定信噪比的零均值高斯白噪声。LMS算法 的均衡器抽头数为 l1,调整步长为 0.0l,RIS 算法均衡器抽 头数为 25,遗忘因子为 0.98,调整步长为 0.O1。其中图4(a) 图是脉冲信号经发送成形滤波器后输出的时域波形.图4(b) 是图 4(a)信号的频谱图。从图4(c)和(d)可以看出 l1抽头 LMS自适应均衡器的误差信号要大于 25抽头 RLs自适应均 衡器的误差信号 ,RIS 算法 自适应均衡器性能更优 从图4 (e)和(f)可以看出光纤色散导致码间干扰的产生。从图4(g) 和(h)可 以看出 LMS自适应 均衡器 和 RIS 自适应 均衡器 均 能够改善信号输出,有效消除码间干扰,25抽头 RIS自适应 均衡器比 ll抽头 LMS自适应均衡器的均衡性能要好.收敛 速度更快,但是以提高计算量为代价的。 4 结 论 LMS算法和RLS算法都比较简单、运算高效性.在各种 条件下具有良好性能。对于高速光纤通信系统 LMS算法和 RLs算法同样能很好的对光纤信道进行均衡,有效消除光纤 色散和PMD引起的码间干扰。但 RLs算法稍微复杂.但收敛 速度更快,性能更好。所以.基于这两种算法的自适应均衡器 都能很好满足对均衡速度要求较高的光纤通信系统。 参考文献: [1】顾畹仪 ,闻和.WDM超长距离光传输技术【M】.北京:北京 邮电大学出版社 .2006. 【2】Buchali F,Bulow H,Baumert W,et a1.Reduction of the chromatic dispersion penalty at lOGbit/s by integrated electronic equalizers【el//in Techn.Dig.OFC’00,Baltimore, Mar.7-10,ThS1 2O00,268-270. [3】Ingham J D,Penty R V,White I H,et aLElectronic equalization for lenOh extension of x2 to×3 in 10Gbiffs multimode-fiber data communication links『J1.Electron.Lett⋯2004,40(22): 1473—1439. [4]Bulow H,Buchali F,Baumert W,et a1.PMD mitigation at 10Gbit/s using liner and nonlinear integrated electronic equalizer circuits[J].Electron.Lett.,2000,36(2):163—164. 【5]樊昌信,张甫翊,徐炳祥,等.通信原理 【M】.5版.北京:国 防 工 业 出版社 .2001. [6】张贤达.现代信号处理 【M】.北京:清华大学出版社,2002. (上接第 98页) 即可 。ApplicationContext.xml文件主要配置如下 : </property> </bean> </beans> 这样服务器 响应 给手机终 端的数据处理部分完毕 。一次 交互过程完成。 3 结束语 Android提供的API仅仅把从 Web服务器中的数据响应 到手机终端的HttpResponse对象中,接着将该对象中的数据 转化成字节数组 ,由于响应过来的数据可能是各种不 同的类 型 ,都包 含在该字节数 组 中,要将 自己数组 中的数 据还原成 服务器端原有的数据类型,就要采用别的方法,于是采用了 Sun公 司提供 的 ByteArrayInputStream[~过 滤流 和 DataInput— Stream 流 绑 定 的 方 法 ,利 用 DatalnputStream 提 供 的 各 种 readXxx()方法 ,就可 以把 Web服务器端 发过来 的不 同数据 类型 Xxx数据提取 出来 .然后交给Android提供 View 对象 在界面上进行处理。这样就为 Android手机访问 Web服务器 一 】02- 提取不同类型的数据提供 了技术 构架fg-91,为 Android和其他 种类的手机开发人员提供 了参考 。 参考文献 : [1】Bumette Ed.Android基础教程[M】.张波,高朝勤,杨选,等 译.北京 :人 民邮电出版社 ,20o9. 【2]彭晨阳.java实用系统开发指南[M】.北京:机械工业出版 社 .2004. 【31王向辉,张国印,陈洁.Android应用程序开发【M】.北京:清 华大学出版社 ,2010. [4】廖文奎.Struts编程基础与实例精讲fM】.北京:中国电力出 版社 .2006. [5】Deitel P J,Deitel HM.Java for programmers[M].张君施,译. 北京 :电子工业 出版社 ,2010. 【6】罗会渡.JSF第一步【M】.北京:清华大学出版社,2007. 【7】余志龙.Googh Android SDK开发范例大全 【M】.北京:人 民邮电出版社 ,2009. f81连晋平,刘平.Web Service技术在移动通信商务手机终端 的应用田.电子设计工程,2008,16(7):64—65. LIAN Jin-ping,LIU Ping.Application of Web Service in mo— bile—communication—business cell phone[J1.Electronic Design Engineering,2008,16(7):64—65. 【9】连晋平,李梅 ,刘平.3G移动商务系统的数据层次和状态 分析【J】.电子设计工程,2010,18(2):132-133. LIAN Jin-ping,LI Mei,LIU Pin nalysis of data levels&states of3G mobile business affairs system【J].Electronic Design En— gineenng。2010,18(2):132—133.
/
本文档为【Android手机访问服务器的一种数据交互方法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索