這次的這篇文章給大家分享的是php實作webservice(實測C#及java可呼叫),有需要的朋友可以參考一下
使用PHP搭建起一個其他語言如C#、JAVA可用的Webservice的方法與網路上大多數所述的用PHP建立的webservice感覺是有差別的。對於介面的輸入參數及輸出參數較為複雜的情況下,這裡建議直接將輸入參數及輸出參數統一為XML string或是Json string。這裡著重介紹的是怎麼實作一個webservice,而對於輸入輸出參數的格式,如何操作XML string就不多介紹,一搜一大把,但是要注意對於XML和json的話要注意參數的過濾和檢查。該文介紹的是帶有wsdl檔案的webservice,no-wsdl的方式較為簡單,這裡不做介紹
首先需要開啟soap擴展,即將php.ini檔案中的extension=php_soap.dll前的分號去掉然後重新啟動apache。查看phpinfo是否開啟soap。具體如何操作這裡跳過,實作webservice是需要soap擴充的。
網路上找到的php生產wsdl的方式類別產生的wsdl檔案從而搭建的webservice只有php能用,簡直不要再坑了。所以這裡就以曲線救國的方式來產生wsdl文件。先透過C#搭建一個webservice來產生wsdl,之後只要稍加更改就可以用了。
1.新專案->ASP.NET Web應用程式建立一個工程;
#2.b.右鍵解決方案->添加->新建項選擇Web服務(ASMX);
3.編寫接口,注意C#中要發佈出來的function前要加[WebMethod],其中可能還要新建一些類別:
4.寫完成按ctrl+F5運行出現如下所示,之後在url後面加上?wsdl會出現如下圖所示的wsdl ,另存為就可以了。
5.將產生的WSDL檔案中的
6.PHP編寫webservice介面:
7.發布webservice:
<?php /** * Created by PhpStorm. * User: Damon * Date: 2018/1/26 * Time: 11:16 */ //引入自动加载 require __DIR__ . '/vendor/autoload.php'; $wsdlfile='MESWebService.wsdl';//wsdl文件路径 $webserver = new \SoapServer($wsdlfile); $webserver->setClass(\Src\MESWebService::class); $webserver->handle();
注意,Web Service的方法在宣告時至多一個參數, 可是呼叫此方法時就必須傳value1,value2兩個參數。 (這點十分令人費解,我的理解是,在呼叫該方法時,系統把所有參數都放到一個物件裡傳過來)。回傳值也很特別,不是直接回傳$arry,而是把它放到一個物件裡再回傳。傳回值中key值對應的是wsdl中的名稱。
1.新專案->ASP.NET Web應用程式建立一個工程,與前面的一樣;
2.右鍵項目下面的引用->新增服務引用,點選進階跳出服務引用設置,點選裡面右下角的新增Web引用,出現如下圖所示:
3.在URL填入已發佈的webservice服務的位址,回車後若正確出現下圖,之後依需求修改Web引用名後點選新增引用:
4.然後右鍵點選項目->新增->新建項,選擇web窗體,編輯.aspx.cs檔案的內容。
5.e.最後按ctrl+F5運行可以查看對應的輸出,如下圖所示,說明php實作的webservice在C#中可以正確呼叫。
相關推薦:
以上是php實作webservice(實測C#及java可呼叫)的詳細內容。更多資訊請關注PHP中文網其他相關文章!