關於 php 調用 其他語言寫的Web Service SOAP 介面的參數傳遞問題

來源:互聯網
上載者:User

標籤:很多   朋友   內容   參考   語言   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 介面的參數傳遞問題

相關文章

聯繫我們

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