Web Service 实例


任何应用程序都可拥有 Web Service 组件。

Web Service 的创建与编程语言的种类无关。

本章节我们将为大家介绍使用 PHP 的 SOAP 扩展来创建 Web Service。

SOAP有两种操作方式,NO-WSDL 与 WSDL。

  • NO-WSDL模式:使用参数来传递要使用的信息。
  • WSDL模式: 使用WSDL文件名作为参数,并从WSDL中提取服务所需的信息。

一个实例:PHP Web Service

在开始实例前,我们需要确定PHP是否安装了 SOAP 扩展。查看 phpinfo,出现以下信息表明已经安装了 SOAP 扩展:

在这个例子中,我们会使用 PHP SOAP 来创建一个简单的 Web Service。

服务端 Server.php 文件代码如下:

  1. <?php
  2. // SiteInfo 类用于处理请求
  3. Class SiteInfo
  4. {
  5. /**
  6. * 返回网站名称
  7. * @return string
  8. *
  9. */
  10. public function getName(){
  11. return "菜鸟教程";
  12. }
  13.  
  14. public function getUrl(){
  15. return "www.runoob.com";
  16. }
  17. }
  18.  
  19. // 创建 SoapServer 对象
  20. $s = new SoapServer(null,array("location"=>"http://localhost/soap/Server.php","uri"=>"Server.php"));
  21.  
  22. // 导出 SiteInfo 类中的全部函数
  23. $s->setClass("SiteInfo");
  24. // 处理一个SOAP请求,调用必要的功能,并发送回一个响应。
  25. $s->handle();
  26. ?>

客户端 Client.php 文件代码如下:

  1. <?php
  2. try{
  3. // non-wsdl方式调用web service
  4. // 创建 SoapClient 对象
  5. $soap = new SoapClient(null,array('location'=>"http://localhost/soap/Server.php",'uri'=>'Server.php'));
  6. // 调用函数
  7. $result1 = $soap->getName();
  8. $result2 = $soap->__soapCall("getUrl",array());
  9. echo $result1."<br/>";
  10. echo $result2;
  11. } catch(SoapFault $e){
  12. echo $e->getMessage();
  13. }catch(Exception $e){
  14. echo $e->getMessage();
  15. }

这时我们访问 http://localhost/soap/Client.php,即可输出结果。