Android调用Web应用浅析

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:sl2260ygl2260
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:该文主要研究Android访问JSP、ASP.NET等不同Web应用的方法及解决方案,分析了URL、HttpClient、HttpURLConnection网络应用的技术,对XML、JOSN数据的解析进行了比较,就asp.net、jsp和Web Service的应用资源生成、调用提出了解决方案。
  关键词:Android;XML;JOSN;Web Service
  中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)22-0140-03
  通过长期的信息化建设,基于互联网的Web应用已非常丰富,积累了大量的数据和资源,随着移动智能设备的普及,App应用大量涌现,APP的设计与制作不再是专业公司的专利,众多的企事业单位将原有系统进行APP化拓展已是大势所趋。将这些用不同语言编写、使用不同数据库的资源融入企业的APP应用中就是本文探讨的主题。
  1 Android访问Web应用资源的主要途径
  1.1 通过URL进行网络应用
  URL统一资源定位器是指向互联网资源的指针,由协议名、主机、端口和资源组成:protocol://host:port/resourceName。常用方法有:获取URL资源名getFile()、获取URL查询字符串getQuery()、返回URL远程连接的URLConnection对象openConnection()、打开URL连接并返回其输入流openStream()等。
  无参数直接用URL访问网络资源时openStream()方法读取指定资源并生成InputStream流,在本地对该输入流进行读取,如while(InputStream对象.read(byte[]数组对象)>=0){}将输入流读到字节数组中。
  当提交参数时,则用URL的openConnection()方法返回的URLConnection对象(示例中的conn),建立起应用与URL间的通信连接,通过其实例发送请求并读取相关资源。发送GET方式请求时用connect()建立连接;发送POST方式请求时,取得URLConnection对象的输出流再发送请求参数。
  1.2 使用Http访问网络
  (1) 使用Apache HttpClient
  为更好处理如Session、Cookie等,在Android中可用HttpPost和HttpGet封装post请求和get请求,用HttpClient的excute()方法发送post请求并返回服务器的响应数据。用HttpResponse的getAllHeaders()、getHeaders(String name)等方法获取服务器的响应头,用getEntity()方法获取HttpEntity对象,该对象包装了服务器的响应内容,程序通过该对象获取服务器的响应内容。
  2 Android访问Web应用资源需解决的主要问题
  2.1 中文乱码现象
  网络通信中产生乱码的主要原因是编码不一致,多数终端设备都支持UTF-8字符集,而Java网络传输使用ISO-8859-1,调用资源时,可用EntityUtils.toString(数据,"编码")进行传输,也可用getBytes("编码")对汉字编码得到字节数组,再用new String(Bytes[],”解码”)对字节数组解码。
  2.2 用DOM、SAX、Pull三种方式解析XML
  1) DOM解析先将XML文件内容以文档树的方式存入内存,通过API遍历树、检索数据,简单易用,占内存多,用于数据量小的文件。DOM解析常用属性:元素Element、节点Node、节点名称nodeName、节点值nodeValue、属性attributes;常用方法:获取所有元素getDocumentElement()、获取指定标签的所有元素getElementsByTagName(name)、插入子节点appendChild(node)等。
  2) SAX解析基于回调函数,速度快占用内存少,读取到开始或结束标签、节点、内容时就回调一个事件,事件源通过XMLReader的parser()方法解析并产生事件,事件处理器由ContentHander等4个接口集合而成,一般可用DefaultHandler类进行简化处理。
  使用时创建SAXParserFactory对象,调用newSAXParser()方法生成SAXParser解析器,用getXMLReader()方法获得解析器的事件源对象XMLReader,实例化一个DeafultHandler对象,用setContentHandler将两者连接,通过XMLReader的parse()方法从输入源得到XML数据,最终由DefaultHandler对象返回数据。
  3) Pull解析与SAX类似,也是基于回调,Pull回调时返回数字,操作更为便捷,通过parser.next()方法即可进入下一元素并触发事件。
  2.3 用JSON進行数据交换
  JSON是轻量级的数据交换语言,用编程语言对JSON对象进行生成和解析,实现数据交换。JSON和XML均有相同的数据可读性和丰富的解析手段,但JSON相较XML数据体积小、与JavaScript交互更方便、速度快,但JSON的数据描述性差。
  JSONObject是JSON定义的基本单元,由健-值对构成,外部调用返回一个{健:值}字符串,内部用put(健,值)方法添加数值;JSONStringer创建JSON text;JSONArray值为数组,toString()输出时,值用逗号","隔开放在一对中括号内;JSONTokener是 JSON文本解析类,用Object nextValue()将JSON文本解析为对象。   JSONObject、JSONArray构建json文本时,先创建JSONObject对象,put()方法向里面加入数据,若添加同类型多数据,可创建JSONArray对象,将数据加入JSONArray对象后再加入JSONObject对象,也可将JSONObject对象加入另一JSONObject对象。获取时用getType("关键字")或optType("关键字")获取键的值并转换为指定类型。JSONStringer构建json文本时object和endObject配对使用,分别设置健和值,值为数组时要求array和endArray配对使用。
  解析一条记录的Json时,创建JSONObject对象,用map.put("键",jsonObj.getType("键"))将数据加入Map对象。解析多条记录的Json,创建JSONArray对象,进行遍历,用((JSONObject)jsonObjs.opt(索引)) .getJSONObject("singer")獲得当前记录对象,再取内容。
  3 Android调用Asp.net应用的解决方案
  制作被手机调用Asp.net页面,设置网页的Request和Response的ContentEncoding编码为utf-8,用Request.Params["键"]得到传入参数后,获得要返回的数据内容,进行Xml处理后转换为字符串返回。
  Android应用中首先将网址编码由utf-8转为ISO-8859-1,在将要传递的参数加入Map对象后生成List,与网址一起Post提交,获得返回的数据,并进行XML解析体现。
  4 Android调用Jsp应用的解决方案
  Web端用jsp实现时,根据提交的参数取得数据并转换为XML格式,参数要用String(参数getBytes("iso-8859-1"),"utf-8")进行转码后再提交,获得的内容可用DOM、SAX、JDOM、DOM4J等方式解析,若获得的数据内容简单,可直接用字符串的形式加入XML标签生成,将生成的字符串由utf-8转为iso-8859-1编码输出。Android应用同上。
  5 Android调用Web Service的解决方案
  Web Service是发布在互联网上的一种完成特定需求的在线应用服务,基于XML和HTTPS,通信协议主要基于SOAP、用WSDL进行服务描述,通过UDDI来发现和获取服务。Web Service可以用C#、Java、PHP等任何语言编写,最后返回XML类型的数据。可由各种平台的应用进行交互,与RMI、CORBA等远程调用技术相比,Web Service跨平台、跨语言的特点使其应用广泛,但性能略低。
  Android没有WebService相关的库,一种是通过加载XML格式的SOAP协议数据,把该数据与要提交的参数封装成实体并通过HTTP请求发送给WebService服务器,获得Web Service服务器返回的XML数据并进行解析。更常用的是采用ksoap2第三方包的方式,用SoapObject(WebService名称空间,方法名)创建SoapObject对象后,通过addProperty()增加要提交的参数,创建SoapSerializationEnvelope对象并指定其bodyOut属性为SoapObject对象实例,调用HttpTransport对象的call(完整的方法路径, SoapSerializationEnvelope对象)连接到指定WebService方法,通过getResponse()即可获得返回的数据。
  针对目前众多已建有Web应用或网站的单位,在进行APP应用开发过程中,为利用现有的资源,可根据原有的平台制作相应的Web页面,将原不同语言、不同平台的的应用系统综合到统一的APP应用中,并结合互联网+的发展趋势,拓展新的功能和业态,实现资源的充分利用。
  参考文献:
  [1] 龙军. Android技术核心与应用开发[M].南海出版公司,2014.
  [2] 姜文波,龙军. Android平台的套接字应用浅析[J].科技信息,2014(9).
  [3] 龙军. 基于Java语言的流式套接字编程探析[J].电脑知识与技术,2013,9(10).
  [4] 翟大昆. Android项目开发详解[M]. 北京:机械工业出版社,2012.
  [5] 王小科. ASP.NET程序开发范例宝典[M].北京:人民邮电出版社,2012.
其他文献
对5个双钢管混凝土短柱进行了轴心受压试验。试验结果表明,在轴心受压荷载作用下双钢管混凝土柱的受力全过程是由弹性、弹塑性以及破坏3个阶段组成的,具有很好的延性。由于双钢
道家"乐生"思想强调内关己心,追求精神层面的自我实现和满足,尊重人的参与性和自主性,代表了一种具有人性关怀的生命价值观。道家"乐生"思想融入老年教育是回归以人为本、彰
针对榆林市饲料木本植物种质资源匮乏问题,在榆林市榆阳区进行了优良木本饲料品种试验,结果为引种的6个饲料桑品种和1个构树品种的越冬保存率埋土均高于不埋土;所有饲料桑品
以北京4号线地铁车辆内装系统三维设计为例,阐述了三维设计的思想、流程、建模技巧、建模规范等,在总结4号线地铁车辆整车三维设计成功经验的同时,指出了前期工作存在的问题,并提
对5个不同损伤程度的框架节点采用玄武岩纤维加固后进行低周反复荷载试验。考虑混凝土框架节点受损修复后初始损伤的影响,提出构件修复后混凝土承载力折减系数;基于现行设计
针对建筑物平移主要技术流程,总结平移各环节的现有设计方法,指出现有理论缺陷。通过力学推演许结合相关理论,提出了钢筋混凝土框架结构平移时推力计算方法,解决了此类建筑物移动
目的应用超声技术综合评价颈动脉粥样硬化与冠状动脉粥样硬化性心脏病(冠心病)病变程度的相关性。方法选取颈动脉斑块患者268例,根据其是否患有冠心病,分为冠心病组和非冠心
摘要:该文首先分析了现有铁路集装箱运输管理信息系统的存在的一些问题,然后对该系统从功能上进行了划分,并给出了详尽的功能设计方法,旨在为集装箱运输信息系统更加完善提供借鉴。  关键词:铁路;集装箱;信息系统  中图分类号:TP315 文献标识码:A 文章编号:1009-3044(2015)30-0057-02  铁路集装箱运输是铁路货运现代化的重要标志。近年来,铁路集装箱运输管理信息系统的建设取得了