標籤:很多 朋友 內容 參考 語言 rar XML 數組 cal
關於 php 調用 其他語言寫的Web Service SOAP 介面的參數傳遞問題,有需要的朋友可以參考下。
php調用java寫的soap介面經驗:
情境一:
java是以數組的形式接收參數的,我使用的方法如下:
方法一:
require_once ROOT_PATH . ‘/libraries/nusoap/nusoap.php‘;//引入nusoap類庫檔案
$client = new nusoap_client("$WSDL_URL",true);
$client->decode_utf8 = false;
$client->soap_defencoding = "UTF-8";//java接收是是使用utf-8的,設定為utf-8,防止出現亂碼
$arr =array("param1"=>$param1,"param2"=>$param2);//傳遞的參數
$result = $client->call(‘Reserve_Save2‘,$arr);
if ($client->fault) {
//成功
} else {
//失敗
}
此種情景也可以使用以下三種方法調用:
$client = new SoapClient($WSDL_URL);
方法二、$client->FunctionName($param1,$param2);
方法三、$client->__soapCall("FunctionName",array($param1,$param2));
方法四、$client->__soapCall("FunctionName",array("param1"=>$param1,"param2"=>$param2));
情境二:
java是以字串的形式接收參數的,方法一調試不成功,經曆了很多嘗試之後,找到這篇文章(http://blog.163.com/shihua_23/blog/static/2333759420108213340651/),嘗試了裡面的方法,終於成功了,頓時淚流滿面,非常感謝作者。方法如下:
方法五:
$soap = new SoapClient ( "$WSDL_URL"
);
$param = array(array("data"=>"<Request><cardtype>15</cardtype><cardnumber>88888888</cardnumber><telephone>18511111111</telephone><name>小星星</name></Request>"));//註:此處必須是二維數組,且第二維的索引值必須是data,value值是要傳遞的xml結構的字串。
$result = $soap->__soapCall ( ‘FunctionName‘,
$param );
此處貼出我參考的文章的內容:
連結:http://blog.163.com/shihua_23/blog/static/2333759420108213340651/
php在調用C#寫的SOAP介面方法需要傳遞參數時,以下三種方法均會傳遞失敗:
$client = new SoapClient($WSDL_URL);
1、$client->FunctionName($param1,$param2);
2、$client->__soapCall("FunctionName",array($param1,$param2));
3、$client->__soapCall("FunctionName",array("param1"=>$param1,"param2"=>$param2));
正確的方法是將參數作為二維數組來傳,如下所示:
$param_ary =array(array("param1"=>$param1,"param2"=>$param2) );
$client->__soapCall("FunctionName",$param_ary);
若php調用php自己寫的SOAP服務端,則無需傳二維數組。
其中原因不明,待查。。。。
關於 php 調用 其他語言寫的Web Service SOAP 介面的參數傳遞問題