php實現webservice(實測C#及java可調用)

來源:互聯網
上載者:User
這次的這篇文章給大家分享的是php實現webservice(實測C#及java可調用),有需要的朋友可以參考一下

使用PHP搭建起一個其他語言如C#、JAVA可用的Webservice的方法與網上大多數所述的用PHP建立的webservice感覺是有差別的。對於介面的輸入參數及輸出參數較為複雜的情況下,這裡建議直接將輸入參數及輸出參數統一為XML string或者是Json string。這裡著重介紹的是怎麼實現一個webservice,而對於輸入輸出參數的格式,如何操作XML string就不多介紹,一搜一大把,但是要注意對於XML和json的話要注意參數的過濾和檢查。該文介紹的是帶wsdl檔案的webservice,no-wsdl的方式較為簡單,這裡不做介紹

檢查並開啟soap擴充

首先需要開啟soap擴充,即將php.ini檔案中的extension=php_soap.dll前的分號去掉然後重啟apache。查看phpinfo是否開啟soap。具體如何操作這裡跳過,實現webservice是需要soap擴充的。

在VS中建立C#的webservice

網上找到的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檔案中的<soap:address>裡的location改為PHP webservice的發布地址:

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中的名稱。

使用C#進行調用測試

1.建立項目->ASP.NET Web應用程式建立一個工程,與前面的一樣;
2.右擊項目下面的引用->加入服務參考,點擊進階跳出服務引用設定,點擊裡面右下角的添加Web引用,出現如所示:

3.在URL中填入發布的webservice服務的地址,斷行符號後若正確出現,之後根據需求修改Web引用名後點擊添加引用:

4.然後右擊項目->添加->建立項,選擇web表單,編輯.aspx.cs檔案的內容。


5.e.最後按ctrl+F5運行可以查看到對應的輸出,如所示,說明php實現的webservice在C#中可以正確調用。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.