连接到.NET服务器时出现PHP nuSoap问题:“;对象引用未设置为对象的实例。”;
我目前正在使用PHP进行一个SOAP项目。脚本正在连接到远程.NET服务服务器。我使用HelloWorld操作得到了很好的响应,但是当脚本使用其他操作获取任何其他数据时,我得到了 “对象引用未设置为对象的实例。” 在$data数组的diffgram子数组中(请参见下文)连接到.NET服务器时出现PHP nuSoap问题:“;对象引用未设置为对象的实例。”;,.net,php,soap,nusoap,.net,Php,Soap,Nusoap,我目前正在使用PHP进行一个SOAP项目。脚本正在连接到远程.NET服务服务器。我使用HelloWorld操作得到了很好的响应,但是当脚本使用其他操作获取任何其他数据时,我得到了 “对象引用未设置为对象的实例。” 在$data数组的diffgram子数组中(请参见下文) 以下是当前代码,不包括服务URL和参数 <?php require_once('../lib/nusoap.php'); $options = array( # server 'wsdl' =&
以下是当前代码,不包括服务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>";
}
?>
尝试(有一个免费版本)或其他类似的SOAP测试客户端,并确保您使用的web服务实际按照预期工作。如果是这样,那么担心你的代码。试试(有一个免费版本)或其他类似的SOAP测试客户端,确保你使用的web服务实际按照预期工作。如果是这样,那么就要担心你的代码了。使用而不是nuSoap。我昨天读到这篇文章,并尝试使用它。我将WSDL设置为false,但无法确定所需的uri和位置参数,即使我尝试了所有可能的URL/操作组合。我想,这是可行的,只是没有抓住它。以下是我使用soapClient时得到的结果。>致命错误:未捕获的SoapFault异常:[WSDL]SOAP-error:解析WSDL:无法从“…”加载:在/folder/file.php:25堆栈跟踪:#0/folder/file.php(25):SoapClient->SoapClient('))#1{main}中的第25Use而不是nuSoap行的/folder/file.php中过早结束数据。我昨天读到这篇文章并尝试使用它。我将WSDL设置为false,但无法确定所需的uri和位置参数,即使我尝试了所有可能的URL/操作组合。我想,这是可行的,只是没有抓住它。以下是我使用soapClient时得到的结果。>致命错误:未捕获的SoapFault异常:[WSDL]SOAP-error:解析WSDL:无法从“…”加载:在/folder/file.php:25堆栈跟踪:#0/folder/file.php(25):SoapClient->SoapClient(')1{main}第25行的/folder/file.php中抛出标记html第3行中的数据过早结束