PHP中SOAP协议的使用和相关调试
创始人
2024-07-13 13:40:12
0

这次我们主要讲解一下PHP的调试内容,其中涉及了SOAP协议的使用。使用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 服务.现在开始代码编写,页面代码如下:

  1.  
  2.  
  3.  
  4.    body{font-size:12px;}  
  5.  
  6.  
  7.  
  8.  
  9. A phone No: 13973738080

     
  10. //这里是该服务的 WSDL 地址  
  11. $wsdl="http://www.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl";  
  12. //实例化 Soap Client,即 Soap协议的客户端  
  13. $client=new Soap Client($wsdl);  
  14. //使用 getMobileCodeInfo 方法,需要传递两次参数,需要注意的是,这两个参数须放到一个数组中  
  15. $onePhone=$client->getMobileCodeInfo(  
  16.       array('mobileCode'=>'13973738080',  
  17.        'userID'=>''  
  18.       )  
  19. );  
  20. //显示返回信息  
  21. print_r($onePhone);  
  22. ?> 
  23.  
  24. All Information

     
  25. //调用另外一个方法,该方法不需要参数  
  26. $result=$client->getDatabaseInfo();  
  27. //显示其返回结果  
  28. print_r($result);  
  29. ?> 
  30.  

运行结果,如下图:

运行结果

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

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

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

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

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

 

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
规避非法攻击 用好路由器远程管... 单位在市区不同位置设立了科技服务点,每一个服务点的员工都通过宽带路由器进行共享上网,和单位网络保持联...
范例解读VB.NET获取环境变... VB.NET编程语言的使用范围非常广泛,可以帮助开发人员处理各种程序中的需求,而且还能对移动设备进行...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...