任何應(yīng)用程序都可擁有 Web Service 組件。

Web Service 的創(chuàng)建與編程語言的種類無關(guān)。

本章節(jié)我們將為大家介紹使用 PHP 的 SOAP 擴(kuò)展來創(chuàng)建 Web Service。

SOAP有兩種操作方式,NO-WSDL 與 WSDL。

  • NO-WSDL模式:使用參數(shù)來傳遞要使用的信息。

  • WSDL模式: 使用WSDL文件名作為參數(shù),并從WSDL中提取服務(wù)所需的信息。


一個(gè)實(shí)例:PHP Web Service

在開始實(shí)例前,我們需要確定PHP是否安裝了 SOAP 擴(kuò)展。查看 phpinfo,出現(xiàn)以下信息表明已經(jīng)安裝了 SOAP 擴(kuò)展:

在這個(gè)例子中,我們會(huì)使用 PHP  SOAP 來創(chuàng)建一個(gè)簡(jiǎn)單的 Web Service。

服務(wù)端 Server.php 文件代碼如下:

<?php 
// SiteInfo 類用于處理請(qǐng)求
Class SiteInfo
{
    /**
     *    返回網(wǎng)站名稱
     *    @return string 
     *
     */
    public function getName(){
        return "php中文網(wǎng)";
    }

    public function getUrl(){
        return "ipnx.cn";
    }
}

// 創(chuàng)建 SoapServer 對(duì)象
$s = new SoapServer(null,array("location"=>"http://localhost/soap/Server.php","uri"=>"Server.php"));

// 導(dǎo)出 SiteInfo 類中的全部函數(shù)
$s->setClass("SiteInfo");
// 處理一個(gè)SOAP請(qǐng)求,調(diào)用必要的功能,并發(fā)送回一個(gè)響應(yīng)。
$s->handle();
?>

客戶端 Client.php 文件代碼如下:

<?php
try{
  // non-wsdl方式調(diào)用web service
  // 創(chuàng)建 SoapClient 對(duì)象
  $soap = new SoapClient(null,array('location'=>"http://localhost/soap/Server.php",'uri'=>'Server.php'));
  // 調(diào)用函數(shù) 
  $result1 = $soap->getName();
  $result2 = $soap->__soapCall("getUrl",array());
  echo $result1."<br/>";
  echo $result2;
} catch(SoapFault $e){
  echo $e->getMessage();
}catch(Exception $e){
  echo $e->getMessage();
}