亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

PHP使用SOAP擴展實現WebService的方法

2024-05-04 23:44:37
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了PHP使用SOAP擴展實現WebService的方法,結合實例形式較為詳細的分析了SOAP擴展的原理及實現WebService的相關技巧,需要的朋友可以參考下
 

本文實例講述了PHP使用SOAP擴展實現WebService的方法。分享給大家供大家參考,具體如下:

最近在一個PHP項目中對接外部接口涉及到WebService,搜索引擎上相關文章不是很多,找到的大都是引用一個號稱很強大的開源軟件NuSOAP(下載地址:http://sourceforge.net/projects/nusoap/),即一些類。文章寫描述的環境是PHP 4.3,現在都流行PHP 5.2或PHP 5.3了。先拿來試試,運行出錯,原來NuSOAP提供的soapclient類與PHP 5中新增了內置的SOAP擴展的SoapClient類沖突了。

雖然NuSOAP號稱可以用于所有的PHP 環境,不受服務器安全設置的影響。但需要引用一大堆類文件,還是覺得用PHP 5中新增了內置的SOAP擴展好一些,能實現實用就好。先了解一下SOAP:

一、SOAP和XML-PRC比較

在Web服務發展的初期,XML格式化消息的第一個主要用途是,應用于XML-RPC協議,其中RPC代表遠程過程調用。在XML遠程過程調用(XML-RPC)中,客戶端發送一條特定消息,該消息中必須包括名稱、運行服務的程序以及輸入參數。

XML-RPC只能使用有限的數據類型種類和一些簡單的數據結構。人們認為這個協議還不夠強大,于是就出現了SOAP——其最初的定義是簡單對象訪問協議。之后,大家逐漸意識到SOAP其實并不簡單,而且也不需要必須使用面向對象語言,所以,現在人們只是沿用SOAP這個名稱而已。

XML-RPC只有簡單的數據類型集,取而代之,SOAP是通過利用XML Schema的不斷發展來定義數據類型的。同時,SOAP也能夠利用XML 命名空間,這是XML-RPC所不需要的。如此一來,SOAP消息的開頭部分就可以是任何類型的XML命名空間聲明,其代價是在系統之間增加了更多的復雜性和不兼容性。

隨著計算機行業的覺醒,人們發現了基于XML的Web服務的商業潛力,于是,各家公司開始不斷地發掘想法、觀點、論據以及標準化嘗試。W3C曾經設法以“Web服務活動”的名義來組織成果展,其中也包括實際做出SOAP的XML協議工作組(XML Protocol Working Group)。與Web服務有關的標準化成果(從某種程度上說與SOAP相關或者依賴于SOAP)的數量已經倍增了到了令人驚訝的程度。

最初,SOAP是作為XML-RPC的擴展而發展起來的,它主要強調的是,通過從WSDL文件中所獲得的方法和變量名來進行遠程過程調用?,F在,通過不斷進步,人們發現了更多的使用SOAP的方式,而不僅僅是采用“文件”方式——基本上是使用一個SOAP信封來傳送XML格式化文件。無論如何,要掌握SOAP,了解WSDL所扮演的角色是最根本的。

二、SOAP數據包結構解析

SOAP的消息被稱為一個SOAP Envelope,包括SOAP Header和SOAP Body。其中,SOAP Header可以方便的插入各種其它消息來擴充Web Service的功能,比如Security(采用證書訪問Web Service),SOAP Body則是具體的消息正文,也就是Marshall后的信息。

SOAP調用的時候,也就是向一個URL(比如 http://api.google.com/search/beta2 )發送HTTP Post報文(根據SOAP規范,HTTP Get報文也可被支持),調用方法的名字在HTTP Request Header SOAP-Action中給出,接下來就是SOAP Envelope了。服務端接到請求,執行計算,將返回結果Marshall成XML,用HTTP返回給客戶端。

三、SOAP簡單示例

SOAP開發一般有三種方式選擇:

1)、PEAR自帶的SOAP擴展;
2)、PHP自帶的SOAP擴展;
3)、NuSOAP(純PHP) 。

PHP 5中新增了內置的SOAP擴展,作為PHP的一部分提供的,因此不需要下載、安裝和管理單獨的包。這是第一個用C而不是PHP為PHP編寫的SOAP實現,因此作者聲稱它的速度要快得多。相關文檔包含在PHP手冊的Function Reference部分(php_soap.dll)。

一個訪問.NET WEB服務的客戶端例子:

< ? php$objSoapClient = new SoapClient("http://www.webservicemart.com/uszip.asmx?WSDL");$param = array("ZipCode"=>'12209'); $out = $objSoapClient->ValidateZip($param);$data = $out->ValidateZipResult;echo $data;?>

四、實例

1)、用PHP建立SOAP服務

建立soap_server.php(虛擬路徑為:http://localhost/php/soap/soap_server.php)

< ? php/*** A simple math utility class*/class math{  /**  * Add two integers together  *  * @param integer $a The first integer of the addition  * @param integer $b The second integer of the addition  * @return integer The sum of the provided integers  */  public function add($a, $b){    return $a + $b;  }  /**  * Subtract two integers from each other  *  * @param integer $a The first integer of the subtraction  * @param integer $b The second integer of the subtraction  * @return integer The difference of the provided integers  */  public function sub($a, $b){    return $a - $b;  }  /**  * Div two integers from each other  *  * @param integer $a The first integer of the subtraction  * @param integer $b The second integer of the subtraction  * @return double The difference of the provided integers  */  public function div($a, $b){    if($b == 0){      throw new SoapFault(-1, "Cannot divide by zero!");    }    return $a / $b;  }}$server = new SoapServer('math.wsdl', array('soap_version'=>SOAP_1_2));$server->setClass("math");$server->handle(); ?>

注:

a)、math類是即將公開的webservice;
b)、$server->setClass,不是$server->addClass。
2)、用PHP客戶端訪問剛建立SOAP服務

< ? php// $client = new SoapClient('http://localhost/php/soap/math.wsdl');$client = new SoapClient("http://localhost/php/soap/soap_server.php?WSDL");try{  $result = $client->div(8, 2); // will cause a Soap Fault if divide by zero  print "The answer is: $result";}catch(SoapFault $e){  print "Sorry an error was caught executing your request: {$e->getMessage()}";}?>

本質上,http://localhost/php/soap/soap_server.php?WSDL就是要訪問到注釋行所指的wsdl描述文件,所以這個WSDL文件必須事先生成。而對于其他語言如Java則可以動態生成。對于PHP自帶的SOAP擴展要求這個WSDL文件必須事先生成好。

可以用ZendStudio生成靜態的WSDL文件,此時用到math類的phpdoc作為生成WSDL的元數據。用ZendStudio生成wsdl文件時,必須正確說明Web服務目標地址,片斷如下:

...  <service name="mathService">    <port binding="typens:mathBinding" name="mathPort">      <soap:address location="http://localhost/php/soap/soap_server.php"></soap:address>    </port>  </service>...

注:調用PHP Webserver的方法必須傳入命名參數。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲最新av在线| 午夜精品一区二区三区在线| 亚洲人午夜精品免费| 久久视频在线观看免费| 在线观看欧美成人| 日韩av电影国产| 亚洲天堂免费视频| xxx成人少妇69| 亚洲美女久久久| 国产精品偷伦免费视频观看的| 精品美女国产在线| 中文欧美在线视频| 色www亚洲国产张柏芝| 大桥未久av一区二区三区| 日韩久久免费电影| 午夜精品一区二区三区在线| 国产精品嫩草影院久久久| 中文字幕精品久久| 日韩精品视频中文在线观看| 亚洲精品国产福利| 欧美日韩国产成人高清视频| 庆余年2免费日韩剧观看大牛| 精品国产户外野外| 性欧美亚洲xxxx乳在线观看| 日韩av片永久免费网站| 亚洲国产美女久久久久| 久久精品人人做人人爽| 国产在线观看精品一区二区三区| 亚洲欧洲激情在线| 韩曰欧美视频免费观看| 国产精品国产三级国产aⅴ9色| 成人国产精品色哟哟| 成人欧美一区二区三区黑人| 国产精品久久综合av爱欲tv| 成人欧美一区二区三区在线湿哒哒| 亚洲人精选亚洲人成在线| 91视频免费网站| 91嫩草在线视频| 日韩美女在线看| www.国产精品一二区| 精品国产一区二区三区四区在线观看| 日韩精品免费视频| 国产视频亚洲视频| 国产成人精品视频| 91在线免费看网站| 日韩一区二区av| 国产成人aa精品一区在线播放| 亚洲黄在线观看| 精品成人乱色一区二区| 亚洲色图美腿丝袜| 夜夜狂射影院欧美极品| 国产91色在线播放| 亚洲香蕉伊综合在人在线视看| 国产一区深夜福利| 91福利视频网| 日本精品视频在线| 成人伊人精品色xxxx视频| 亚洲综合视频1区| 北条麻妃一区二区三区中文字幕| 插插插亚洲综合网| 久久精品国产成人精品| 久久精品国产视频| 91高清免费视频| 中文精品99久久国产香蕉| 日韩成人在线网站| 精品国产一区久久久| 久久久久久久久中文字幕| 国产精品日韩精品| 精品欧美国产一区二区三区| 91牛牛免费视频| 国产精品久久久久久久美男| 国产精品第10页| 国产精品白嫩初高中害羞小美女| 久久色在线播放| 国产极品jizzhd欧美| 久久免费精品日本久久中文字幕| 欧美精品在线播放| 成人免费看片视频| 日韩视频亚洲视频| 精品久久久久久久久久久久| 亚洲精品永久免费精品| 亚洲女在线观看| 一本色道久久88精品综合| 在线看欧美日韩| 日韩有码在线视频| 亚洲一区二区黄| 国产精品草莓在线免费观看| 欧美日本国产在线| 欧美激情女人20p| 亚洲精品电影久久久| 性色av一区二区三区红粉影视| 中文字幕久久久av一区| 国产精品一区二区电影| 久久久久北条麻妃免费看| 国产丝袜一区二区三区免费视频| 精品国产一区二区三区久久狼黑人| 国产+成+人+亚洲欧洲| 久久天天躁狠狠躁夜夜躁| 免费91在线视频| 亚洲欧洲中文天堂| 激情成人中文字幕| 欧美一级高清免费| 亚洲变态欧美另类捆绑| 91久久精品国产| 久久综合伊人77777尤物| 日韩精品亚洲视频| 日韩av色综合| 91精品国产91久久久久久久久| 91国产一区在线| 国产精品久久久久免费a∨大胸| 色综合亚洲精品激情狠狠| 欧美又大又粗又长| 亚洲欧美国产另类| 中文字幕精品网| 欧洲一区二区视频| 国产一区二区三区高清在线观看| 日韩成人在线观看| 国产欧美精品日韩| 日韩一区二区久久久| 亚洲精品欧美日韩专区| 国产精品视频一区二区高潮| 成人精品久久一区二区三区| 国产激情999| 欧美日本精品在线| 92国产精品视频| 中文字幕在线观看日韩| 成人精品视频在线| 久久久久免费精品国产| 国产在线观看精品| 欧美极品在线播放| 98视频在线噜噜噜国产| 国产精品久久久久久久久久新婚| 热久久这里只有精品| 亚洲品质视频自拍网| 久久久欧美一区二区| 亚洲а∨天堂久久精品9966| 啪一啪鲁一鲁2019在线视频| 亚洲在线免费视频| 亚洲精品免费一区二区三区| 亚洲欧美一区二区三区四区| 日韩欧美中文免费| 国产成人一区二区三区| 播播国产欧美激情| 日韩av不卡在线| 欧美高跟鞋交xxxxhd| 97国产精品久久| 日韩在线观看网址| 成人激情在线播放| 最好看的2019年中文视频| 日韩视频亚洲视频| 国产精品久久久久久久天堂| 日韩电影免费观看中文字幕| 日韩www在线| 久久亚洲欧美日韩精品专区| 欧美电影免费播放| 亚洲午夜精品视频| 欧美夫妻性视频| 亚洲国产天堂久久国产91| 青青草99啪国产免费| 国产欧美日韩亚洲精品| 日韩欧美国产免费播放| 国产精品成人观看视频国产奇米| 欧美精品在线观看91| 欧美成人免费全部|