Android中ksoap2-android调用WebService 实现天气预报

本文介绍了如何在Android中使用ksoap2-android库调用WebService获取天气预报。首先,讲解了Android应用通常作为Web Service客户端的角色。然后,详细阐述了调用Web Service的步骤,包括创建HttpTransportSE对象、设置SOAP Envelope、实例化SoapObject、添加参数、调用服务和解析响应。最后,提到了一个免费的天气预报Web Service,并给出了程序界面布局的注意事项,指出Android 4.0及以上版本可能存在兼容性问题。
摘要由CSDN通过智能技术生成

     Java本身提供丰富的Web Service支持,比如说sun公司制定的JAX-WS 2 规范,还有Apache开源组织所提供的Axis1,Axis2,CXF等,这些技术不仅可以用于方便的对外提供Web Service,也可以用于简化Web Service的客户端编程。WebService是一种基于SOAP协议的远程调用标准,对于这个协议理解不深,知道webservice可以将不同操作系统平台、不同语言、不同技术整合到一块,android SDK没有直接调用webservice的库,最常用的是借助ksoap2-android这个第三方SDK

     对于手机等小型设备,他们的计算资源,存储资源都十分有限,因此android应用不大可能需要对外提供Web Service,Android应用通常只是充当Web Service的客户端,调用远程Web Service。

     Google为Android平台开发Web Service客户端提供了ksoap2-android项目。下载ksoap2-android,点击这里下载jar包http://code.google.com/p/ksoap2-android/

     将下载好的JAR包添加到项目中的lib目录下,就可以借助ksoap2-android项目来调用Web Service所暴露的操作。


  使用ksoap2-android调用Web Service操作的步骤如下:

1.创建HttpTransportSE传输对象:HttpTransportSE ht = new HttpTransportSE(SERVICE_URL); SERVICE_URL是webservice提供服务的url

2.使用SOAP1.1协议创建Envelop对象:SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 设置SOAP协议的版本号,根据服务端WebService的版本号设置。

3.实例化SoapObject对象:SoapObject soapObject = new SoapObject(SERVICE_NAMESPACE, methodName); 第一个参数表示WebService的命名空间,可以从WSDL文档中找到WebService的命名空间。第二个参数表示要调用的WebService方法名。

4.设置调用方法的参数值,如果没有参数,可以省略:例如soapObject.addProperty("theCityCode", cityName);

5.记得设置bodyout属性 envelope.bodyOut = soapObject;

6.调用webservice:ht.call(SERVICE_NAMESPACE+methodName, envelope);

7.获取服务器响应返回的SOAP消息:

     SoapObject result = (SoapObject) envelope.bodyIn;
     SoapObject detail = (SoapObject) result.getProperty(methodName+"Result");

在开发天气预报的应用之前,首先需要找到一个可以对外提供天气预报的Web Service,暂且使用网络免费的WebService这个可以http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx

访问http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl,可以看到WSDL文档。

通过WSDL文档可以查看到调用Web Service的必要信息。

本程序主要需要调用如下三个Web Service操作:

1.获取省份

2.根据省份获取城市

3.根据城市获取天气

/**
 *
 */
package org.crazyit.net;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Ca
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值