展会信息港展会大全

Android开发之WebSerivce,以及SOAP和WSDL
来源:互联网   发布日期:2015-09-28 15:46:14   浏览:2756次  

导读:根据W3C的定义,Web Services(Web服务)是一个用于支持网络间不同机器互操作的软件系统,它是一种自包含、自描述和模块化的应用程序,它可以在网络中被描述、发布 和调用,可以将它看作是基于网络的、分布式的模 ...

Web Services(Web服务)是一个用于支持网络间不同机器互操作的软件系统,它是一种自包含、自描述和模块化的应用程序,它可以在网络中被描述、发布 和调用,可以将它看作是基于网络的、分布式的模块化组件。 Web Services是建立在通用协议的基础之上,如HTTP、SOAP、UDDI、WSDL等,这些协议在操作系统、编程语言和对象模型的选择上没有任何倾 向,因此有着很强的生命力。 Web Services的优势在于提供了不同应用程序平台之间的互操作,它使得基于组件的开发和Web相结合的效果达到最佳。它是基于HTTP协议的,调用请求 和回应消息都可以穿过防火墙,不需要更改防火墙的设置,这样就避免了使用特殊端口进行通信时无法穿越防火墙的问题。

SOAP(Simple Object Access Protocol,简单对象访问协议)是一种轻量级的、简单的、基于XML的协议,被设计用于在分布式环境中交换格式化和固化信息的简单协议。也就是说, 要进行通信,进行数据访问传输,就必须依赖于一定的协议,而SOAP正是WebService通信中所依赖的一种协议。目前经常使用的SOAP协议有两个 版本:SOAP 1.1 和 SOAP 1.2。

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

在Android平台调用Web Service需要依赖于第三方类库ksoap2,当前最新版本是3.1.1,下载地址:http://code.google.com/p/ksoap2-android/

代码示例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

private String ksoapRequest(String methodName,

LinkedHashMap<String, Object> parameter) {

final String NAMWSPACE = "";//自己补充命名空间

final String SERVICE_URL = "";//自己补充请求服务地址

String response = null;

// step1 指定WebService的命名空间和调用的方法名

SoapObject request = new SoapObject(NAMESPACE, methodName);

// step2 设置调用方法的参数值,这里的参数名称不一定和WebService一致,但是有些必须和webservice的请求参数顺序保持一致

Log.i(TAG,"--->请求参数");

if (parameter != null) {

for (String keyStr : parameter.keySet()) {

Log.i(TAG,"name=" + keyStr + "---value="+ parameter.get(keyStr));

request.addProperty(keyStr,parameter.get(keyStr));

}

}

// step3 生成调用WebService方法的SOAP请求信息,并指定SOAP的版本

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

// 设置是否调用的是dotNet下的WebService

envelope.dotNet = false;

// 必须,等价于envelope.bodyOut = request;

envelope.setOutputSoapObject(request);

// step4 创建HttpTransportSE对象

HttpTransportSE ht = new HttpTransportSE(SERVICE_URL);

ht.debug = true;

// step5 调用WebService

try {

String soapAction = NAMESPACE + methodName;

System.setProperty("http.keepAlive", "false");//在手机系统为4.0以上出现EOFException,请添加这行代码。

ht.call(soapAction, envelope);

if (envelope.getResponse() != null) {

response = (String) envelope.getResponse();

}

} catch (Exception e) {

e.printStackTrace();

}

return response;

}

根据W3C的定义,Web Services(Web服务)是一个用于支持网络间不同机器互操作的软件系统,它是一种自包含、自描述和模块化的应用程序,它可以在网络中被描述、发布 和调用,可以将它看作是基于网络的、分布式的模块化组件。

Web Services是建立在通用协议的基础之上,如HTTP、SOAP、UDDI、WSDL等,这些协议在操作系统、编程语言和对象模型的选择上没有任何倾 向,因此有着很强的生命力。

Web Services的优势在于提供了不同应用程序平台之间的互操作,它使得基于组件的开发和Web相结合的效果达到最佳。它是基于HTTP协议的,调用请求 和回应消息都可以穿过防火墙,不需要更改防火墙的设置,这样就避免了使用特殊端口进行通信时无法穿越防火墙的问题。

简单的理解:通常我们所说的WebService都是远程的某个服务器对外公开了某种服务,或者理解为对外公开 了某个功能或者方法,而我们可以通过编程来调用该服务以获得我们需要的信息。例如:www.webxml.com.cn对外公开了手机号码归属地查询服务,我们 只需要在调用该服务时传入一个手机号段(号码),就能立即获取该号段的归属地信息。

更通俗的理解:通过使用WebService,我们能够像调用本地方法一样去调用远程服务器上的方法。我们并不 需要关心远程的那个方法是Java写的,还是PHP或C#写的;我们并不需要关心远程的方法是基于Unix平台,还是Windows平台,也就是说 WebService与平台和语言无关。

说到WebSerivce,就必须要知道SOAP和WSDL,它们到底和WebSerice有着怎么的关系?上面已经提到,Web Services是建立在HTTP、SOAP、WSDL等通用协议的基础之上。

SOAP(Simple Object Access Protocol,简单对象访问协议)是一种轻量级的、简单的、基于XML的协议,被设计用于在分布式环境中交换格式化和固化信息的简单协议。也就是说, 要进行通信,进行数据访问传输,就必须依赖于一定的协议,而SOAP正是WebService通信中所依赖的一种协议。目前经常使用的SOAP协议有两个 版本:SOAP 1.1 和 SOAP 1.2。

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

WSDL是我们能够实实在在看到的东西,它是一份xml文档,用于描述某个WebSerivce的方方面面。例如,上面曾提到www.webxml.com.cn网站提供了手机号码归属地查询的 WebSerivce,我们怎么来使用这个WebSerivce呢?它是基于哪个版本的SOAP协议?调用它需要传入什么参数?它会返回什么值?是一个字 符串还是xml文档?这一系列的问题都能在WSDL中找到答案。上面这个服务的WSDL地址是:http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl, 在浏览器上访问它,你将会看到如下所示的xml文档:

WebXml.com.cn

国内手机号码归属地查询WEB服务,提供最新的国内手机号码段归属地数据,每月更新。

使用本站 WEB 服务请注明或链接本站:http://www.webxml.com.cn/ 感谢大家的支持!

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

WebXml.com.cn

国内手机号码归属地查询WEB服务,提供最新的国内手机号码段归属地数据,每月更新。

使用本站 WEB 服务请注明或链接本站:http://www.webxml.com.cn/

感谢大家的支持!

... ...

... ...

看到WSDL后,我们能从中得到哪些信息呢?

1)从第08行可以看出,该WebSerivce所基于的SOAP协议版本是SOAP1.2;

2)从第10行可以看出,该WebSerivce的命名空间(NameSpace)是http://WebXml.com.cn/;

3)从第20行可以看出,我们查询手机号码归属地时要调用的方法名称为:getMobileCodeInfo;

4)从第23-24行可以看出,我们调用getMobileCodeInfo方法时需要传入两个参数:mobileCode和userId;

5)从第31行可以看出,调用getMobileCodeInfo方法后,将返回一个名为getMobileCodeInfoResult的结果字 符串。

到这里,我们已经初步认识了WebSerivce,以及SOAP和WSDL。

赞助本站

人工智能实验室

相关热词: WebSerivce SOAP WSDL Android开发

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港