《Android应用程序开发》课件-第7章_第1页
《Android应用程序开发》课件-第7章_第2页
《Android应用程序开发》课件-第7章_第3页
《Android应用程序开发》课件-第7章_第4页
《Android应用程序开发》课件-第7章_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章网络通信7.1使用WebView7.2使用HTTP访问网络7.3解析XML格式数据7.4解析JSON格式数据7.5使用WebService7.6综合案例7.7实训本章小结

7.1使用WebView

任务目标使用WebView控件,打开页面。效果如图7-1-1所示。图7-1-1WebView运行效果图

实施步骤

步骤1:在activity_main.xml文件中添加一个WebView控件,控件id为web1。

步骤2:在默认的MainActivity中编写与WebView相关的代码。

步骤3:配置uses-permission,在AndroidManifest.xml文件中添加如下代码中加粗内容,以便访问网络。

完成后的运行效果图如图7-1-1所示。

相关知识

现在很多App都内置了Web网页,WebView比较灵活,不需要频繁升级客户端,变化频繁的页面可以通过采用WebView方法加载网页来实现。WebView中的常见方法见表7-1-1。

WebViewClient主要用于帮助WebView处理各种通知、请求事件,有以下几种常用方法:

(1) onPageFinished页面请求完成。

(2) onPageStarted页面开始加载。

(3) shouldOverrideUrlLoading拦截url。

(4) onReceivedError访问错误时回调。例如,访问网页时报错,在这个方法回调的时候可以加载错误页面。

7.2使用HTTP访问网络

任务目标使用HTTP获取页面数据,效果如图7-2-1所示。图7-2-1HTTP获取数据结果

实施步骤

步骤1:点击菜单【File】,选择【new】|【newmodule】,命名为Ex7_2_1。在activity_main.xml文件中添加一个Button按钮,按钮文本为http获取数据和用于结果显示的TextView,代码参考如下清单中的9~18行。

步骤2:在文件MainActivity.java中修改AppCompatActivity。

运行结果如图7-2-1所示。

相关知识

HTTP(HyperTextTransferProtocol)的中文全称是超文本传输协议,它是一种为分布式、合作式、多媒体信息系统服务,面向应用层的协议,目前是Internet上使用最广泛的应用层协议之一。它基于传输层的TCP协议进行通信,HTTP协议是通用的、无状态的协议。

HTTP的工作原理十分简单,就是客户端向服务器发送一条HTTP请求,服务器收到请求之后会返回一些数据给客户端,然后客户端对这些数据进行解析和处理即可。

在Android上发送HTTP请求的主要方式是使用HttpURLConnection。其用法是:首先获取HttpURLConnection的实例,一般只需要新建一个URL对象,并传入目标的网络地址,然后调用openConnection()方法即可。

得到了HttpURLConnection的实例之后,就可以设置HTTP请求数据所使用的方法。常用的方法主要有两个:GET和POST。GET表示希望从服务器那里获取的数据,而post则表示将数据提交给服务器。

之后调用getInputStream()方法就可以获取服务器返回的输入流,剩下的任务就是对数据流进行读取了。

最后可以调用disconnect()方法将这个HTTP连接关闭。

7.3解析XML格式数据

任务目标读取XML文件并输出。解析XML文件的运行效果如图7-3-1所示。图7-3-1解析XML文件的运行结果

实施步骤

步骤1:新建Module,命名为Ex7_3_1。如图7-3-2所示,在Ex7_3_1上单击鼠标右键选择【New】|【Folder】|【AssetsFloder】,在界面中点击Finish按钮,创建Assert文件夹。

图7-3-2创建assert文件夹菜单

步骤2:在布局文件中添加一个TextView控件,用于存放结果。

步骤3:在MainActivity.java中修改代码。

代码运行效果如图7-3-1所示。

相关知识

XML(ExtensibleMarkupLanguage)的中文全称为可扩展标记语言,它有如下特性:

(1) XML是一种很像HTML的标记语言。

(2) XML的设计宗旨是传输数据,而不是显示数据。

(3) XML标签没有被预定义,需要自行定义标签。

(4) XML被设计为具有自我描述性。

(5) XML是W3C的推荐标准。

Android中解析XML格式数据大致有以下三种方法:

(1)使用SAX解析XML。

(2)使用DOM解析XML。

(3)使用PULL解析XML。PULL内置于Android系统中,也是官方解析布局文件所使用的方式。

7.4解析JSON格式数据

任务目标通过解析JSON数据显示不同地区的天气情况。运行效果如图7-4-1和图7-4-2所示。图7-4-1JSON数据读取结果一图7-4-2JSON数据读取结果二

实施步骤

步骤1:新建Module,命名为Ex7_4_1,在Ex7_4_1名字上单击鼠标右键,在弹出菜单中选择【New】|【Folder】|【RawResourcesFolder】。

步骤2:将所需图片素材(如背景和天气标志等)放入drawable中,编写完成activity_main.xml。

步骤3:添加WeatherInfo.java。

步骤4:下载导入gson.Jar包(详见后面“使用gson解析JSQN数据”内容),编写WeatherService.java解析类。

步骤5:完成MainActivity.java代码编写。

程序运行后的效果如图7-4-1和图7-4-2所示。

相关知识

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。因为解析XML比较复杂,而且需要编写大段代码,所以客户端和服务器的数据交换格式往往通过JSON来进行交换。尤其对于Web开发来说,JSON数据格式在客户端直接可以通过JavaScript等前端代码来进行解析。

1. JSON键值对

JSON一共有两种数据结构。一种是以键值对(key/value)形式存在的无序的jsonObject对象。一个对象以“{”(左花括号)开始,以“}”(右花括号)结束,每个名称后跟一个“:”(冒号),键值对之间使用“,”(逗号)分隔,如图7-4-3所示。图7-4-3key/value形式JSON数据结构示意

另一种数据格式就是有序的value的集合,这种形式被称为jsonArray。数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,以“]”(右中括号)结束,值之间使用“,”(逗号)分隔,如图7-4-4所示。图7-4-4有序value集合形式JSON数据结构示意

2. JSON数据的解析

常见的JSON解析库有org.json、gson、json-lib、json-simple等。

1)使用org.json解析JSON

AndroidSDK中提供了org.json,用来解析JSON数据。

2)使用gson解析JSON数据

gson是Google提供的解析JSON的一个开源类库。使用前需要先将gson.Jar添加到项目中(gson库的使用方法可参考/artifact/com.google.code.gson/gson)才能使用其提供的方法。将项目切换到project模式,把下载的jar包放入app→libs中,使用组合键Ctrl+Alt+Shift+s,出现ProjectStructure界面,然后在Dependencies中添加依赖,如图7-4-5所示。图7-4-5添加gson.Jar

7.5使用WebService

任务目标使用WebService制作手机号码归属地查询页面。效果如图7-5-1所示。图7-5-1手机号码归属地查询结果

实施步骤

步骤1:新建Module,命名为Ex7_5_1。修改布局文件activity_main.xml文件,包括标题TextView(手机号码段)、EditText(用于输入手机号码)、Button(作为查询按钮)、另一个TextView(用于显示结果)。

步骤2:在MainActivity.java程序中添加代码。

程序运行结果如图7-5-1所示。

相关知识

WebService(Web服务)是一个用于支持网络间不同机器互相操作的软件系统,是一种自包含、自描述和模块化的应用程序,可以在网络中被描述、发布和调用,可以将它看作是基于网络的、分布式的模块化组件。WebService建立在通用协议(如HTTP、SOAP、UDDI、WSDL等)的基础之上。WebService的优势在于提供了不同应用程序平台之间的相互操作,它使得基于组件的开发和Web相结合的效果达到最佳。

SOAP(SimpleObjectAccessProtocol,简单对象访问协议)是一种轻量级的、简单的、基于XML的协议,是一个用于在分布式环境中交换格式化和固化信息的简单协议。也就是说,要进行通信,进行数据的访问传输,就必须依赖一定的协议,而SOAP正是WebService通信中所依赖的一种协议。

WSDL(WebServiceDescriptionLanguage,Web服务描述语言)是一种用来描述Web服务的XML语言,它描述了Web服务的功能、接口、参数、返回值等,便于程序开发员绑定和调用服务。它以一种和具体语言无关的方式定义了给定Web服务调用和应答的相关操作和消息。

通常所说的WebService都是远程的某个服务器对外开放了某种服务,或者理解为对外公开了某个功能或者方法,通过编程来传入一些参数,即可返回所需要的信息。例如,对外公开了手机号码归属地查询服务,用户只需要在调用该服务时传入一个手机号段(号码),就能立即获取该号段的归属地信息。

7.6综合案例

任务目标制作一个简易天气预报App。效果如图7-6-1所示。图7-6-1天气情况查询结果

实施步骤

步骤1:新建Module,命名为Ex7_6_1,在主界面activity_main.xml中添加一个EditText(用于输入地名)、一个Button按钮(用于查询)和两个TextView(分别用于显示获取到的原始数据和解析后的数据)。

步骤2:新建htmlService.java文件,用于读取网络数据。

步骤3:新建数据操作JavaBean文件WeatherInfo.java。

步骤4:主程序用于查询数据库得到城市编码,并根据编码查询相应的天气数据。修改MainActivity.java代码。

示例运行结果如图7-6-1所示。

案例分析

程序中使用的数据库cityId的表city数据如图7-6-2所示。图7-6-2地区编码表city

7.7实训

实训目的编写一个网络图片浏览器。通过该实例了解网络资源访问方法。

实训步骤

(1)制作程序主界面布局activity_main.xml文件,包括输入图片网址的EditText组件、访问按钮Button和图片显示组件ImageView。

(2)在清单文件AndroidMan

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论