php如何利用soap呼叫.Net的WebServiceasmx檔案

傑克.陳發表於2016-07-04

原文:php 如何利用 soap呼叫.Net的WebService asmx檔案


最近,幫一個同行測試用.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 = new SoapClient( http://192.168.3.178:8080/ChkWelePsw.asmx?WSDL);
$client->soap_defencoding = `utf-8`;
$client->decode_utf8 = false;
$client->xml_encoding = `utf-8`;

//本行測試不可行 $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));//間接呼叫

$p = $client->ChkWele($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)]
public string ChkWele(string username, string psw)
{
    
string ret = “”;
    
return ret;
}

 


相關文章