天天看點

PHP5下SOAP調用實作過程

本文以某公司iPhone 6手機預約接口開發為例,介紹PHP5下SOAP調用的實作過程。

SOAP(Simple Object Access Protocol )簡單對象通路協定是在分散或分布式的環境中交換資訊的簡單的協定,是一個基于XML的協定,它包括四個部分:SOAP封裝(envelop),封裝定義了一個描述消息中的内容是什麼,是誰發送的,誰應當接受并處理它以及如何處理它們的架構;SOAP編碼規則(encoding rules),用于表示應用程式需要使用的資料類型的執行個體; SOAP RPC表示(RPC representation),表示遠端過程調用和應答的協定;SOAP綁定(binding),使用底層協定交換資訊。

WSDL(Web Service Description Language)就是描述XML Web服務的标準XML格式,WSDL由Ariba、Intel、IBM和微軟等開發商提出。它用一種和具體語言無關的抽象方式定義了給定Web服務收發的有關操作和消息。就其定義來說,你還不能把WSDL當作一種對象接口定義語言,例如,CORBA或COM等應用程式體系結構就會用到對象接口定義語言。 WSDL保持協定中立,但它确實内建了綁定SOAP的支援,進而同SOAP建立了不可分割的聯系。是以,當我在這篇文章中讨論WSDL的時候,我會假定你把SOAP作為了你的通訊協定。

SOAP和WSDL雖然是web service的兩大标準,但是兩者并沒有必然的聯系,都可以獨立使用。它們之間的關系就類似HTTP和Html之間的關系。前者是一種協定,後者是對一個Web Server的描述。

在php的的配置檔案php.ini中,找到

然後将前面的;号去掉,然後重新開機web服務

某省電信公司的入單接口為http://***.******.com/services/AcceptedBusiness?wsdl

我們使用SoapClient的__geunctions()和__getTypes()方法檢視該接口的方法,參數和資料類型

隻有__getFunctions中列出的接口才能被soap調用。

在根目錄下建立代碼soap.php

在浏覽器運作:http://localhost/soap.php後,傳回結果如下

其中有個方法 introduceAcceptedBusinessByStandardInterface(string $xmlStr),将是開發文檔中提到的要使用的接口,參數為xml字元串

另外有的接口中提到有SoapHeader認證,這就需要加入__setSoapHeaders方法,具體可檢視http://php.net/manual/zh/soapclient.setsoapheaders.php

這一步就是需要根據開發文檔拼接xml字元串,然後作為introduceAcceptedBusinessByStandardInterface的參數傳入

建立acceptedbusiness.php,内容如下

在浏覽器中執行後,傳回