有一個WebService介面,http://218.245.0.236:7880/sms?WSDL
請問如何在PHP中調用這個介面呢?誰給個詳細代碼呢?謝謝了!
回複討論(解決方案)
你用的是nusoap擴充類還是用的內建的soap類呢
這個是nusoap擴充類的用法,你要先去下一個nusoap工具類
$soapClient = new nusoap_client("http://218.245.0.236:7880/sms?WSDL",true);$parameters=array(**,**,**);$outString = $soapClient->call("webserviceName", $parameters);//一般是這樣調的//call方法裡還可以配很多參數,你根據自己的需要來配,有問題的話,去下個抓包工具來看發送和接收到的包就行
我下載了一個nusoap-0.9.5.zip,用的裡面lip裡的nusoap.php。
我代碼是這樣寫的
include('nusoap.php');// 建立一個soapclient對象,參數是server的WSDL $client = new soapclient('http://218.245.0.236:7880/sms?WSDL', 'wsdl');// 參數轉為數組形式傳遞$aryPara = array('spID'=>'922017', 'Password'=>MD5('admin41501012'));// 調用遠程函數$aryResult = $client->call('RetrieveAll',$aryPara);echo $aryResult;
我在網頁上運行後他返回的是Array,這是什麼意思呢?我得傳回值應該是
RESULTCODE #@#BALANCE#@#
RDFLAG#@#MID#@#SPID#@#ACCESSCODE#@#MOBILE#@#STAT#@#DELIVERTIME#@# RDFLAG#@#MID#@#SPID#@#ACCESSCODE#@#MOBILE#@#MSGCONTENT#@#DELIVERTIME#@#
這種形式的!
還有我在網上看得例子上面有這個
$document=$client->document;
echo <<
$document
SoapDocument;
這又是什麼意思呢?謝謝指教!
如果你調用成功了,返回的就是那個webservice執行後的結果呀
首先你要確認下,返回的是不是webservice返回的正確的結果集
編碼也要設定下
$soapClient->soap_defencoding = 'utf-8'; $soapClient->decode_utf8 = false; $soapClient->xml_encoding = 'utf-8';
調用前加這段代碼
可以解決亂碼問題
他輸出的是Array,我傳回值的形式應該是1#@#0#@#這種形式的!
我在代碼裡加上
$document=$client->document;echo << $document SoapDocument;?>
這些後,就出現一個Array 3#@#-1#@#,這是什麼意思呢?加上這段代碼是什麼意思呢?
我用的時候沒有加這一串東西。
他這樣寫的意思應該是構造發送過去的包吧。你不用寫這段代碼啊
而且我發覺你用的soapclient方法,這個是PHP 5.0+內建的soap類中的方法,並不是你使用的nusoap擴充類。
如果你要使用soap類要修改php.int中的配置,然後重啟伺服器。
你就這樣寫
include('nusoap.php');// 建立一個soapclient對象,參數是server的WSDL $client = new nusoap_client('http://218.245.0.236:7880/sms?WSDL', true);// 解決編碼(如果需要的話就加上)/*$soapClient->soap_defencoding = 'utf-8';$soapClient->decode_utf8 = false;$soapClient->xml_encoding = 'utf-8';*/// 參數轉為數組形式傳遞$aryPara = array('spID'=>'922017', 'Password'=>MD5('admin41501012'));// 調用遠程函數$aryResult = $client->call('RetrieveAll',$aryPara);echo $aryResult;
就這樣調用 其它不用加
我把你的代碼加上怎麼提示我
$client = new nusoap_client('http://218.245.0.236:7880/sms?WSDL', true);
語法錯誤呢?
你是用什麼軟體編寫的呢?我用的dreamerweaver,環境是warm
你搜一下你的nusoap.php 檔案,client方法具體命名是什麼,之前你寫的soapclient,是soap類中的方法,如果nusoap類裡面的也是叫這個名字可能會產生衝突的
順便推薦你個PHP IDE 叫做PHPSTORM 非常好用
謝謝你的幫忙了!我現在使用代理方式調用可以出來值了,直接調用還是沒出來。第一次接觸PHP什麼都不懂,鬱悶!
還有,我使用代理方式調用的時候換必須有這段代碼才可以
$documentSoapDocument;?>
如果沒有這段代碼直接輸出的話只能出現一個Array,鬱悶。我在看下吧!
樓主能給一下具體代碼嗎?因為我php都沒學過但現在在一周之內必須完成,時間急,求解救!麻煩您把包和php代碼發到我郵箱:1006183252@qq.com 謝謝!