2010-04-15 49 views
1

我目前正在使用PHP的SOAP項目。該腳本正在連接到遠程.NET服務服務器。我得到使用的HelloWorld行動提供了很好的迴應,但當劇本要使用其他行動的任何其他數據得到的,我在$ data數組的的DiffGram子陣列得到連接到.NET服務器時發生PHP nuSoap問題:「未將對象引用設置爲對象實例。」

"Object reference not set to an instance of an object."

(見下文)。


這是當前的代碼,不包括服務URL和參數。

<?php 

require_once('../lib/nusoap.php'); 

$options = array(

    # server 

    'wsdl' => false, 
    'srvr' => 'http://test.domain.com/soap/file.asmx', 

    'base' => 'http://sub.domain.com/', 
    'act' => isset($_POST['act'])  ? $_POST['act']  : 'RequestSomething', 

    'curl' => isset($_POST['curl']) ? $_POST['curl'] : false, 
    'char' => 'UTF-8', 

    # proxy 

    'host' => isset($_POST['host']) ? $_POST['host'] : false, 
    'port' => isset($_POST['port']) ? $_POST['port'] : false, 
    'user' => isset($_POST['user']) ? $_POST['user'] : false, 
    'pass' => isset($_POST['pass']) ? $_POST['pass'] : false, 

); 

$client = new nusoap_client(

    $options['srvr'],  $options['wsdl'], 

    $options['host'],  $options['port'],  $options['user'],  $options['pass'] 

); 

$client->soap_defencoding = $options['char']; 

$client->setUseCurl($options['curl']); 

$error = $client->getError(); 

if($error){ 

    $debug = htmlspecialchars($client->getDebug(), ENT_QUOTES); 

    echo "<h2>Error</h2><pre>$error</pre>"; 

    echo "<h2>Debug</h2><pre>$debug</pre>"; 

    exit; 
} 

$params = array(

    'ID' => 123, 
); 

$send = $params; 

$do = $options['base'] . $options['act']; 

$data = $client->call($options['act'], $send, $do, $do);  

if($data && $data = (array) $data) { 
    echo "<h2>Call data</h2>"; 
    echo "<pre>" . print_r($data,true) . "</pre>"; 
} 
?> 
+0

使用http://php.net/manual/en/class.soapclient.php代替nuSoap。 – zaf 2010-04-15 16:34:41

+0

我昨天讀了它,並試圖使用它。我將WSDL設置爲false,但無法找出所需的uri和位置參數,即使我嘗試了每個可能的URL /操作組合。這個工程,它只是沒有抓住它,我猜。 – hatfieldajoshua 2010-04-15 16:45:08

+0

這是我使用soapClient時得到的結果。 >致命錯誤:未捕獲SoapFault異常:[WSDL] SOAP-ERROR:解析WSDL:無法從'http://test.dom ...'加載:數據在標記html行3中的過早結束/文件夾中/file.php:25堆棧跟蹤:#0 /folder/file.php(25):SoapClient-> SoapClient('http://test.dom ...')#1 {main}拋出/ folder/file第25行.php – hatfieldajoshua 2010-04-15 16:53:41

回答

1

嘗試soapUI(有一個免費版本)或其他類似的SOAP測試客戶端,並確保你實際上是使用Web服務工作正常。如果是這樣,然後擔心你的代碼。

相關問題