最近,幫一個同行測試用.net寫的WebService接口,C#調用通過,現在需要測試一下php版本對它的調用,經過各種探索,相關的PHP調用webservice的過程如下:
1.打開php相關擴展:
找到配置文件php.ini 文件, 打開以下擴展
extension = php_soap.dll
extension = php_curl.dll
extension = php_openssl.dll
2.php代碼如下:
代碼如下 復制代碼
<?php
header("content-type:text/html;charset=utf-8");
$client=newSoapClient(" http://192.168.3.178:8080/ChkWelePsw.asmx?WSDL");
//本行測試不可行 $client = new SoapClient(" http://192.168.3.178:8080/chkwelepsw.asmx?WSDL/ChkWele?username=test3&psw=123");
//參數這樣傳遞 先包裝一下
$param=array('username'=>'test3','psw'=>'123');
//調用必須用__soapCall
$p=$client->__soapCall('ChkWele',array('parameters'=>$param));
print_r($p->ChkWeleResult);//這裡先輸出一下變量$p,看看是什麼類型。
?>
注意,在php調用某個方法後,其soap對象,就會自動產生一個Result方法,以方便顯示調用結果,如上面的 被調用端的WebService的 “ChkWele”方法 ,
調用端就有相應的“ChkWeleResult”方法。
.NET部分 webservice要注意的地方
代碼如下 復制代碼
/*
* <system.web>在這個節點中加入如下內容
<webServices>
<protocols>
<add name="HttpSoap"/>
<add name="HttpPost"/>
<add name="HttpGet"/>
<add name="Documentation"/>
</protocols>
</webServices>
*/
[WebMethod(Description ="This......", EnableSession =false)]
publicstringChkWele(stringusername,stringpsw)
{
stringret ="";
returnret;
}