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

     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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值