Download presentation
Presentation is loading. Please wait.
1
第16章 天气预报 --Web Service调用
授课老师:高成珍 QQ号: QQ群: 、 网络资源:
2
本章案例效果分析
3
本章案例效果分析
4
案例概述 本例主要实现天气预报功能,通过Web Service访问第三方提供的 天气信息,获取到的是一连串的字符串信息,然后对这些信息进行解析 、加工、设计成普通用户能一目了然的界面效果。 本例中天气预报主要功能包括显示当前的天气实况、查看未来五天 的天气信息、查看天气变化趋势图、切换城市查看天气信息等。主要涉 及到WebService调用、TabHost+Fragment实现功能切换、 ListView显示未来五天天气信息、GridView显示省份列表和城市列表 、SharedPreference保存基本信息、自定义控件绘制趋势图 等知识。
5
WebService介绍 Web Service是一种基于SOAP(Simple Object Access Protocol,简 单对象访问协议)协议的远程调用标准,主要包括三要素:SOAP、WSDL (Web Service Description Language,Web Service描述语言)、 UDDI(Universal Description Discovery and Integration,统一描述、 发现和整合协议)。其中SOAP用于传递信息的格式,WSDL用于描述如何 访问具体的接口,UDDI用来管理、分发、查询Web Service。通过Web Service可以将不同操作系统平台、不同语言、不同技术整合到一块。 在Android SDK中并没有提供调用Web Service的库,因此,需要 使用第三方的SDK来调用Web Service。比较常用的如ksoap2。将下载 得到的JAR包添加到Android项目的libs目录下。
6
调用WebService的一般步骤 使用ksoap2-android调用WebService操作的步骤如下:
创建SoapSerializationEnvelope对象,该对象代表SOAP消息封装包,用户请求的SOAP以及服务器响应生成的SOAP都可以通过该对象设置和得到,创建该对象时需要传递当前使用的SOAP的版本号,不同的版本会有所区别。 创建SoapObject对象,创建该对象时需要传递所需要调用的Web Service的命名空间以及访问的方法名,其中命名空间需要和WSDL文件中描述的一致。
7
调用WebService的一般步骤 调用SoapObject对象的addProperty(String name,Object value)方法来设置参数,可多次调用该方法,设置多个参数。 调用SoapSerializationEnvelope对象的setOutputSoapObject()方法,或者直接对bodyOut属性赋值,将前面所创建的SoapObject对象作为请求体。 调用HttpTransportSE对象的call()方法,发送请求,需传递两个参数:命名空间+需要访问的方法名和SoapSerializationEnvelope对象。 调用完成后,判断是否有响应,即SoapSerializationEnvelope对象的getResponse()方法的结果是否为空,如果不为空,则根据SoapSerializationEnvelope对象的bodyIn属性获取SoapObject对象,然后解析该SoapObject对象,即可获取Web Service的返回值。
8
SharedPreference保存信息
通常用户在使用APP时,都会产生一些个人信息,如记录用户名和密码、登录状态等,为了使用户下次打开APP时即能获取这些信息,APP应及时保存这些个人信息。Android中提供了SharedPreferences来保存这些信息。在本例中需要保存用户所选择的城市将其作为默认城市。 应用程序使用SharedPreferences接口可以快速而高效的以键值对的形式保存数据,非常类似于Bundle; 信息以XML文件的形式存储在Android设备上; Sharedpreferences里的数据可被该应用的所有组件所访问。
9
SharedPreferences保存信息
SharedPreferences本身是一个接口,不能直接实例化,只能通过Context提供的getSharedpreferences(String name, int mode)方法来获取SharedPreferences实例,第一个参数表示保存信息的文件名,不需要后缀;第二个参数表示Sharedpreferences的访问权限,包括只能被本应用程序读、写,能被其他应用程序读、能被其他应用程序写。 SharedPreferences接口本身只提供了读取数据的功能并没有提供写入数据的功能,如果需要实现写入功能,则需通过SharedPreferences的内部接口Editor来实现,SharedPreferences调用edit()方法即可获取对应的Editor对象。
10
两次返回键退出应用程序 在Android应用中,为了避免用户误操作退出应用程序,通常都会在用户单击退出按钮或手机上的返回键时,给用户一些提示。例如弹出对话框询问用户是否确定要退出,或者提示用户再次单击退出应用。本例采用第二种。 主要思路是定义一个全局的变量count 用于记录用户单击退出按钮的次数,默认为1,然后为退出按钮添加事件处理,首先判断count的值是否小于2,如果小于2则通过Toast弹出提示信息,并启动一个线程用于计时,三秒后count的值恢复为1,如果在3秒内单击第二次则退出。如果不小于2,调用Activity的finish()方法结束当前Activity。
11
课后思考题 思考 模仿调用天气的Web Service,调用Web Service实现国内手机号码归属地查询功能。 (Web Service地址: obileCodeWS.asmx)
Similar presentations