В настоящее время я работаю над проектом SOAP с использованием PHP. Скрипт подключается к удаленному серверу .NET. Я получаю хороший ответ, используя действие HelloWorld , но когда сценарий получает другие данные, используя другие действия, я получаю
"Ссылка на объект не установлена для экземпляра объекта."
в подгруппе diffgram массива данных $ (см. Ниже).
Вот текущий код, исключая сервисные URL и параметры.
<code><?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
";
echo "
Debug
$debug
";
выход;
}
$ params = array (
'ID' => 123,
);
$ send = $ params;
$ do = $ options ['base']. $ опции [ 'действие'];
$ data = $ client-> call ($ options ['act'], $ send, $ do, $ do);
if ($ data && $ data = (array) $ data) {
echo "
Данные вызова
";
echo "
" . print_r($data,true) . "
";
}
?>