2010-06-19 113 views
0

我有一個由Visual Studio Web服務項目自動生成的Hello World C#ASP .NET Web服務。我想從一個PHP客戶端調用它。我能知道該怎麼做嗎?更好,如果任何人都可以用小的代碼示例提供..我沒有在PHP太多的經驗,沒有在Web服務的深入瞭解,因此能夠發現很難做到這一點..如何從PHP客戶端調用C#.NET Web服務

感謝

回答

1

由於PHP是一種動態語言,它非常簡單。所有你需要的是一個庫(SoapUI)和WSDL。如果您具有Web服務的位置(URL),請在URL的末尾添加一個?WSDL,然後定義。然後它只是從那裏調用服務。

<?php 
require_once('libs/nusoap.php'); 
$wsdl="http://thedomain.com/theservice/endpoing.svc?wsdl"; 
$client=new soapclient($wsdl, 'wsdl'); 
$param=array('number1'=>'2', 'number2'=>'3'); 
echo $client->call('add', $param); 
?> 

您可以在這裏找到庫:http://www.soapui.org/

+0

謝謝。我有網絡服務的網址,我也安裝了soapui。我可以通過require_once('libs/nusoap.php')知道你的意思嗎? 它找不到路徑'libs/nusoap.php',並給出以下錯誤。 在第6行C:\ wamp \ www \ hello.php中打開所需'libs/nusoap.php'(include_path ='.; C:\ php5 \ pear')失敗 – chathuradd 2010-06-19 08:09:32

+0

我明白了。我使用nusoap作爲肥皂客戶端庫。我嘗試使用以下方法調用Web服務的HelloWorld方法: require_once('lib/nusoap.php'); \t \t $ wsdl =「http:// localhost:64226/Service1.asmx?wsdl」; \t \t $ client = new soapclient($ wsdl,'wsdl'); \t \t \t \t echo $ client-> call('HelloWorld'); 但它不會返回輸出「Hello World」。而是打印單詞「數組」。任何想法 ?我知道這一定是一個非常基本的問題,我問:) :) – chathuradd 2010-06-19 08:48:35

+0

對不起,我已經習慣了PHP4,所以如果你有PHP5,更好的解決方案是使用內置的SoapClient。示例代碼(測試)運行如下: [PHP客戶端] <?php class SayHello { public $ name ='Benny'; } $ client = new SoapClient('http://localhost/WebService1/Service1.asmx?wsdl'); $ result = $ client-> SayHello(new SayHello()); echo $ result-> SayHelloResult; ? > [ASMX服務] [的WebMethod] 公共字符串的SayHello(字符串名稱){ 回報 「你好」 +名稱; } – Benny 2010-06-19 19:35:04

1

假設這是一個SOAP Web服務,你應該只能使用正常的php SOAP library。現在,SOAP可移植性並不完全符合我的經驗,所以您可能需要小心一些(特別是測試像空數組的工作方式),但這應該是一個很好的起點。

我鏈接的文檔看起來不錯,但是如果您搜索「php SOAP教程」,您會得到很多點擊,這些步驟將帶您一步一步完成。

另一種選擇是nusoap。我無法評論哪種實施更好。

+0

謝謝。我想用nusoap – chathuradd 2010-06-19 09:46:42