Web Service的使用

一、Web Service 平台概述。
 Web Service 平台主要涉及的技术有SOAP、WSDL、UDDI。

 1.SOAP(简单对象访问协议):
 ①SOAP是一种具有扩展性的XML消息协议。SOAP消息是从SOAP发送者传至SOAP接收者的单路信息,任何应用程序都可以作为发送者或接收者。SOAP仅定义消息结构和消息处理的协议,与底层的传输协议独立。SOAP协议能通过HTTP、JMS、SMTP协议传输。
 ②一条SOAP消息就是一份特定的XML文档,SOAP消息包含三个主要元素:
  必须的<Envelope.../>根元素,SOAP消息对应的XML文档以该元素为根元素。
  可选的<Header..../>元素,包含SOAP消息的头信息。
  必须的<Body..../>元素,包含所有的调用和响应信息。

2.WSDL(Web Service描述语言):
  ①WSDL使用XML描述Web Service,包括访问和使用Web Service所必需的信息,定义Web Service的位置、功能等描述信息。
  ②一份WSDL文件定义了三个方面的内容:
 WHAT部分:定义Web Service所提供的操作(方法)。由WSDL的<types../>、<message../>、<portType../>定义。
 HOW部分:定义如何访问Web Service,包括数据格式详情和访问时操作的必要协议。
 WHERE部分:定义Web Service的位置,如何使用特定协议决定的网络地址。由<service../>元素定义。
  ③一份WSDL文档分为两个部分:
    第一部分定义了服务接口,由<message../>和<portType../>两个元素组成。<message../>定义了 操作(方法)的交互方式。<portType../>可包含任意数量的<operation../>元素,每个<operation../>代表一个允许远程调用的操作(方法)。
    第二部分定义了服务实现,由<binding../>和<service../>两个元素组成。<binding../>定义使用特定的通信协议,数据编码模型和底层通信协议,将Web Service服务接口定义映射到具体实现。<service../>包含一系列的<port../>元素,<port../>将会把绑定机制、服务访问协议和端点地址结合在一起。

  WSDL2.0中: <portType../>改为<interface../>  、   <port../>改为<endpoint../>

3.UDDI(统一描述、发现和整合协议):
 ①UDDI是一套信息注册规范,特点是基于Web和分布式。
 ②UDDI的核心组件是UDDI的注册中心,它使用XML文件来描述企业及其提供的Web Service。
 ③UDDI的作用:Web Service提供者通过UDDI注册中心将Web Service的信息加入UDDI的注册中心,该Web Service就可以被Web Service使用者发现和使用。当Web Service使用者找到自己所需的服务后,即可将自己绑定到对应的Web Service提供者上,再根据服务对应的WSDL文档调用对方的服务。


二、Web Service 的使用。
  1.下载ksoap2-android项目的JAR包,并将JAR包添加到Android项目的libs目录下。
  2.使用ksoap2-android调用Web Service的操作,步骤如下:
    ①创建HttpTransportSE对象,该对象用于调用Web Service操作。
    ②创建SoapSerializationEnvelope对象。
    ③创建SoapObject对象,需要传入所要调用Web Service的命名空间、Web Service方法名。
    ④若需要传递参数给Web Service服务端,调用SoapObject对象的addProperty(String name,String value)方法设置参数。
    ⑤调用SoapSerializationEnvelope的setOutputSoapObject()方法,或直接对bodyOut属性赋值,将SoapObject对象设为SoapSerializationEnvelope的传出SOAP消息体。
    ⑥调用HttpTransportSE对象的call()方法,将SoapSerializationEnvelope对象作为参数调用远程的Web Service。
    ⑦调用完成后,访问SoapSerializationEnvelope对象的bodyIn属性或者getResponse()方法,该属性返回一个SoapObject对象,代表Web Service的返回消息,解析该对象,即可获取调用Web Service的返回值。

3.天气预报Web Service实现代码。

  注意:以下代码可以实现得到省份和城市的功能,但是天气状态gwtWeather()方法一直出现空指针异常,研究了很久不知道为什么,如果有知道的朋友,可以发个评论指导一下,谢谢了!

/**
 * WebService工具类
 * 
 */
public class WebServiceUtil {

/**
 * Web Service的URL或者URL+"?wsdl" 都可以
 * Web Service的服务地址和WSDL文档地址
 */
private static final String SERVICE_URL = "http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx";
 // private static final String SERVICE_URL ="http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl";
/**
 * Web Service的命名空间
 */
private static final String SERVICE_NS = "http://WebXml.com.cn/";

/**
 * 返回省份的集合
 * 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值