PHP的SOAP原理及實現詳解

來源:互聯網
上載者:User
PHP的SOAP原理及實現

1. 簡介:

SOAP : (全稱Simple Object Access Protocol) 為交換資料的一種協議規範,該通訊協定位於HTTP之上,以XML格式語言進行資料互換,使用情境:如果各項目之間使用不用的開發語言要進行資料互換,就需要一個互相都能通訊的工具,WSDL,SOAP為此誕生

WSDL: WSDL 指網路服務描述語言 (Web Services Description Language),WSDL 是一種使用 XML 編寫的文檔。這種文檔可描述某個 Web service。它可規定服務的位置,以及此服務提供的操作(或方法)。

2. 配置:

PHP的SOAP擴充開啟及配置

WIn環境

開啟PHP.ini extension=php_soap.dll去掉前面的分號

Linux環境

編譯時間加上 --enable-soap

WSDL緩衝類型 1為磁碟 2為記憶體

soap.wsdl_cache = 1

快取檔案儲存位置

soap.wsdl_cache_dir = /tmp

開啟或關閉WSDL緩衝功能,由於每次進行SOAP都會有下載對方XML文檔的過程,也是其效率低下的原因

soap.wsdl_cache_enabled =1

快取檔案的最大數量

soap.wsdl_cache_limit

快取檔案存留時間

soap.wsdl_cache_ttl = 3600

3. 應用執行個體:

a. 不使用wsdl的情況

服務端:

"index.php"));$a->setClass("testclass");  //指定一個類中的所有方法//$a->addFunction("test");  //指定單個方法$a->handle();   //處理訪問

uri為必填項,用戶端的uri必須和服務端的保持一致

用戶端

try{$client = new SoapClient(null, array("location"=>"http://localhost/instance/index.php","uri"=>"index.php"));//echo $client->getName("getName");          //調用方法echo $client->__soapCall ("getName",array("name"));    //調用方法}catch(Exception $e){print_r($e->getMessage(),true);}

location為SOAP服務端訪問地址,uri與服務端保持一致

b. 使用WSDL方法

因使用wsdl之前需要手動產生xml檔案,手寫的話太過繁瑣,可使用SoapDiscovery.class.php 開源類產生

下載地址

getWSDL(); //產生XML檔案echo $filename;

服務端

$a = new SoapServer("testclass.wsdl");$a->setClass("testclass");  //指定一個類中的所有方法$a->handle();   //處理訪問 

用戶端

try{$client = new SoapClient("http://localhost/instance/index.php?wsdl");//echo $client->getName("getName");//echo $client->__soapCall ("getName",array("name"));print_r($client->__getFunctions()); //列印服務端所有提供的方法
}catch(Exception $e){print_r($e->getMessage(),true);}

擴充類所提供的方法可參考PHP Manual

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.