关于SOAP的几篇文章
轉(zhuǎn)載自:/show-1598-1.shtml
PHP操作soap我總覺得是一件非常痛苦的事情,但沒有辦法,現(xiàn)在很多功能都是基于WebService的,比如那個amazon的,但其實很多 公司都也還是提供了restful之類的接口,使得PHP與其他系統(tǒng)的數(shù)據(jù)交換比較方便。但讓人痛苦的,有時候,你PHP不得不充當(dāng) soapServer,這時候,怎么做呢?zendstudio可以根據(jù)你的函數(shù)和類,幫你生成wsdl,但大多數(shù)情況下,你沒有直接生成的手段,怎么 辦?官方的soapServer功能也太少了一點。你是否還準(zhǔn)備用nuSoap來充當(dāng)server呢?
搜集了一些資料,用來方便的協(xié)助你生成soap接口。如果只是自己的內(nèi)部調(diào)用,可以嘗試用phprpc或者它的升級版hprose進(jìn)行嘗試。
1、利用NuSOAP發(fā)布wsdl。這是PHP5之前的做法了,因為在PHP5之后,直接有soap庫支持,如何發(fā)布wsdl,請看:/arlon/blog/item/d8267d1e6ca4adf01ad576cc.html ,然而這個網(wǎng)址打開是白屏的,內(nèi)容可以稍看這里:
2.4.1 創(chuàng)建支持 WSDL 的 WEB 服務(wù) 為了實現(xiàn) WEB 服務(wù)程序?qū)?WSDL 的支持,需要使用 soap_server 的 configureWSDL 方法,并且在調(diào)用 soap_server 的 register 方法注冊 WEB 服務(wù)程序時,需要提供更詳細(xì)的參數(shù)。看下面的代碼,代碼的文件名是 “/nusoap/nusoap_server3.php”。 <?php require_once("lib/nusoap.php"); function concatenate($str1,$str2) { if (is_string($str1) && is_string($str2)) return $str1 . $str2; else return new soap_fault(' 客戶端 ','','concatenate 函數(shù)的參數(shù)應(yīng)該是兩個字符串 '); } $soap = new soap_server; $soap->configureWSDL('concatenate'); // 初始化對 WSDL 的支持 // 注冊服務(wù) $soap->register('concatenate', array("str1"=>"xsd:string","str2"=>"xsd:string"), // 輸入?yún)?shù)的定義 array("return"=>"xsd:string") // 返回參數(shù)的定義 ); $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ''; $soap->service($HTTP_RAW_POST_DATA); ?> 現(xiàn)在打開瀏覽器,訪問剛才建立的文件,/doc/guide/1.0/zh_cn/topics.webservice
看它的實現(xiàn)是非常簡單,在Controller里增加一個轉(zhuǎn)換wsdl的Action,然后,在要提供的方法上面用phpdoc來進(jìn)行注釋。定義傳入?yún)?shù)的數(shù)據(jù)類型等
- str/string: 對應(yīng) xsd:string ;
- int/integer: 對應(yīng) xsd:int ;
- float/double: 對應(yīng) xsd:float ;
- bool/boolean: 對應(yīng) xsd:boolean ;
- date: 對應(yīng) xsd:date ;
- time: 對應(yīng) xsd:time ;
- datetime: 對應(yīng) xsd:dateTime ;
- array: 對應(yīng) xsd:string ;
- object: 對應(yīng) xsd:struct ;
- mixed: 對應(yīng) xsd:anyType .
不過我也確實沒有過多的細(xì)看,沒仔細(xì)看它對于AUTH驗證支持怎么樣(第三點里介紹的工具是有驗證的,而且就設(shè)在config.php里,非常方便)
好了,我就針對現(xiàn)在的soap server的建立,介紹了四種方法,事實上,我到現(xiàn)在為止是一種都沒有用過,nusoap也就用過客戶端,那也是幾年前的事情了,soapClient 也是,在構(gòu)建soapHeader的時候也走過很多彎路。第三步介紹的工具,我也只是下載了看看源碼,第四步我是看了看手冊。只是先集中一下,以后總會用 到而已。
雖然說,PHPRPC和hprose 在andot他們介紹來說,開發(fā)速度和處理上,都有較為明顯的提高,但如果想做一個公用的web service,那還是用大家都能接受的方法吧。
如果是自己的項目,那可能就會用phprpc或者h(yuǎn)prose來了。hprose測試版用過,感覺還是不錯的。phprpc,我也做了一個sae平臺的移 植版,目前也能夠正常的使用。。在這里也有個簡單的測試:/。有興趣的朋友也可以去看看的。
轉(zhuǎn)載于:https://www.cnblogs.com/newnetboy/archive/2011/01/25/tt179.html
總結(jié)
以上是生活随笔為你收集整理的关于SOAP的几篇文章的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++ 输出控制iomanip
- 下一篇: Vulnstack红日安全内网域渗透靶场