Web Service介绍

本文深入解析Web Service的概念,介绍其作为独立、低耦合、基于XML的平台,在分布式环境中实现应用程序互操作性的优势。重点阐述SOAP协议在Web Service通信中的作用,以及WSDL作为描述Web服务的XML语言,如何帮助用户绑定和调用服务。通过实例展示如何从WSDL文档中获取关键信息,包括使用的SOAP协议版本、命名空间、服务方法名称、所需参数及预期返回类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近写了一款很lowApp,用到了很多的网上资源,就需要访问远端的资源。这时Web Service就强势登场了,那么,什么是Web Service呢? 
Web Service是一个独立的平台,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML标准来描述、发布、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。依据Web Service规范实施的应用程序之间,无论他们使用的语言、平台或协议是什么,都可以互相交互数据。 
Web Service是建立在通用协议的基础上,如HTTPWSDLUDDISOAP等,这些协议在操作系统、编程语言和对象模型的选择上没有任何倾向,因此有很强的生命力。
Web Service是基于HTTP协议的组件,调用请求和回应消息都可以穿过防火墙,这样就避免了更改防火墙设置,也解决了使用特殊端口进行通信时无法穿越防火墙的问题。
简单的说:Web Service就是一个应用程序,它向外暴露一个能通过Web进行调用的API,例如:http://WebXml.com.cn/对外提供了查询天气的方法,只需要在程序中调用该方法,传入一个城市即可得到相应的天气情况。

通俗的讲:Web Service平台是一套标准,定义了应用程序如何在Web上实现互操作性。通过Web Service可以easy的调用远程服务,这不关乎平台和语言。无论远端平台试运行在Windows还是运行在Linux上,也不管远端程序是使用Java.NET还是C#语言的程序,都如同访问本地程序一样。

提到Web Service就不得不提的两个重要协议:SOAPWSDL

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文档:


</span></p><p><span class="string"></span><pre name="code" class="html">    <?xml version="1.0" encoding="utf-8" ?>  
    <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"  
        xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"  
        xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"  
        xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"  
        xmlns:tns="http://WebXml.com.cn/"  
        xmlns:s="http://www.w3.org/2001/XMLSchema"  
        xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"  
        xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"  
        targetNamespace="http://WebXml.com.cn/"  
        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">  
        <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">  
            <a href="http://www.webxml.com.cn/" mce_href="http://www.webxml.com.cn/" target="_blank">WebXml.com.cn</a>  
            <strong>国内手机号码归属地查询WEB服务</strong>,提供最新的国内手机号码段归属地数据,每月更新。<br />  
            使用本站 WEB 服务请注明或链接本站:<a href="http://www.webxml.com.cn/" mce_href="http://www.webxml.com.cn/" target="_blank">http://www.webxml.com.cn/  
            </a>感谢大家的支持!<br />   
        </wsdl:documentation>  
        <wsdl:types>  
            <s:schema elementFormDefault="qualified" targetNamespace="http://WebXml.com.cn/">  
                <s:element name="getMobileCodeInfo">  
                    <s:complexType>  
                        <s:sequence>  
                            <s:element minOccurs="0" maxOccurs="1" name="mobileCode" type="s:string" />  
                            <s:element minOccurs="0" maxOccurs="1" name="userID" type="s:string" />  
                        </s:sequence>  
                    </s:complexType>  
                </s:element>  
                <s:element name="getMobileCodeInfoResponse">  
                    <s:complexType>  
                        <s:sequence>  
                            <s:element minOccurs="0" maxOccurs="1" name="getMobileCodeInfoResult" type="s:string" />  
                        </s:sequence>  
                    </s:complexType>  
                </s:element>  
                ... ...  
            </s:schema>  
        </wsdl:types>  
        ... ...  
    </wsdl:definitions>  
 看到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的结果字符串。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值