在 PHP 中使用 SOAP 协议调用 Web服务(WebService)

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了在 PHP 中使用 SOAP 协议调用 Web服务(WebService)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

使用 PHP调用 WebService,听上去有些高深莫测啊。

        其实这是很简单的一件事。由于 Web服务完全是基于 XML 这种平台无关性的标记语言来实现的,所以在 PHP中实现访问 WebService 是可能的。本例我们来完成这样一个 Web服务的调用获取手机号信息。在互联网上找到这样一个 Web服务是比较容易的,这里我为大家提供一个现成的:http://www.webxml.com.cn/zh_cn/web_services_item.aspx?id=776756327947797A706B413D

        该网站提供了一系列的 Web服务,其中有收费的,也有可以免费使用的。在您打开上述网址后,将会列出“通讯和通信”分类下的所有可用 Web服务。如果网站内容没发生改变,那么您在右侧看到的第一条即为“国内手机号码归属地查询WEB服务”。每个 Web服务下面,包括了三项地址:EndPoint、Disco和 Wsdl。至于这三项各代码什么含义,您可查询相关资料。这里我们要用到的是 EndPoint 和 Wsdl。

        通过 EndPoint 我们可以了解如何使用该服务。打开 "EndPoint" 后面的地址:http://www.webxml.com.cn/WebServices/MobileCodeWS.asmx

        在新打开的页面显示出来该服务下所包括方法。这个服务有两个公有方法,分别是 getDatabaseinfo 获得国内手机号码归属地数据库信息 getmobileCodeInfo 获得国内手机号码归属地省份、地区和手机卡类型信息。

        并且,需要注意的是两个方法的参数问题(如是否需要、需要几个参数)和它的返回结果。第一个方法 getDatabaseInfo 不需要参数,返回的结果是一个维数组;而第二个方法 getMobileCodeInfo 则需要两个参数:mobileCode 和 userID,在实际使用中,这两个参数的值分别是需要查询地区的手机号和空字符串(免费用户),它返回结果是一个字符串。

        而 Wsdl 这个地址,是我们在 PHP 程序中需要使用的地址,现在返回对 PHP 的介绍。

        在目前的 PHP5 中,已经提供了对 SOAP 协议的支持(至于 SOAP 协议的解释,您可查询相关资料了解),它作为一种扩展存在于 PHP 中。在认情况下,这个扩展是没有被开启的。开启该扩展的方法:打开 PHP.ini 文件,找到 ;extension=PHP_soap.dll 一行,将其前面的注释符“;”去掉,保存并重启 apache 服务。现在开始代码编写,页面代码如下:

<head>
<Meta http-equiv="Content-tyPE" content="text/htML; charset=utf-8" />
<style type="text/css">
   body{font-Size:12px;}
</style>
</head>
<body>
<!-- 这里我随意指定一个手机号码,在下面的 PHP 代码中它会作为参数的一部分 -->
<h1>A phone No: 13973738080</h1>
<?PHP
//这里是该服务的 WSDL 地址
$wsdl="
http://www.webxml.COM.cn/WebServices/MobileCodeWS.asmx?wsdl";
//实例化 SoapClient,即 Soap 客户端
$client=new SoapClient($wsdl);
//使用 getMobileCodeInfo 方法,需要传递两次参数,需要注意的是,这两个参数须放到一个数组中
$onePhone=$client->getMobileCodeInfo(
      array(‘mobileCode‘=>‘13973738080‘,
       ‘userID‘=>‘‘
      )
);
//显示返回信息
PRint_r($onePhone);
?>
<hr />
<h1>All Information</h1>
<?PHP 
//调用另外一个方法,该方法不需要参数
$result=$client->getDatabaseInfo();
//显示其返回结果
print_r($result);
?>
</body>

 

看起来是很简单吧,是的,就这么简单。由于代码中给出了比较详细的注释,所以就不再作过多解释,但仍需要向读者说明以下几个问题:

        1. SoapClient 是存在于 Soap.dll 扩展中的一个对象,用来“扮演” Soap 访问过程中的客户端,并为其提供相关功能。相应的,该扩展中同样存在一个用于提供(或创建) Web服务的 Soap 服务端,它的任务由 SoapServer 来完成。至于 SoapServer 对象,我将在后续的讲解中来说明它的用法

        2. SoapClient 的实例化:它的构造函数包括两处参数,一个是 WSDL 文件(即 WSDL 地址),一个是选项列表,后面这个参数是可选的,它用来完成更复杂的访问,如使用代理访问,或者提供服务器需要验证的用户名和密码,等等。这里不再详述,读者可参考相关资料。

        3. SoapClient 实例化之后,就可以通过该实例化对象来调用该 WebService 的公有方法

        如果您对本文中介绍的方法有何意见或建议,请留下您的高见,欢迎交流。本文由 NBWD 原创,请放心转载

脚本宝典总结

以上是脚本宝典为你收集整理的在 PHP 中使用 SOAP 协议调用 Web服务(WebService)全部内容,希望文章能够帮你解决在 PHP 中使用 SOAP 协议调用 Web服务(WebService)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。