我有一个@ http://www.xxxxx/zzzzzzzz/service.asmx可用的Web服务,我正在尝试使用这两个参数发送方法 - some_function
的SOAP请求,但仍然无法获得连接。
这是我的代码:
<?php
$param = array('cedula'=>'XXXX','contrasena'=>'YYYYYY');
$client = new SoapClient("http://www.xxxxx/zzzzzzzz/service.asmx?wsdl");
$result = $client->__soapCall('some_function', $param);
print $result;
?>
我得到的错误是:
致命错误:未捕获的SoapFault异常:[soap:Server]服务器无法处理请求。 ---&GT;你调用的对象是空的。在/home/zzzz/XXXXXXXXXX.com/uni/index.php:6堆栈跟踪:#0 /home/zzzz/XXXXXXXXXX.com/uni/index.php(6):SoapClient-&gt; __ soapCall('some_function',阵列#1 {main}在第6行的/home/zzzz/XXXXXXXXXX.com/uni/index.php中抛出
请建议更正。非常感谢提前:))
答案 0 :(得分:2)
谢谢@dootzky&amp; @lulco。我解决了这个问题。下面的代码对我来说非常好:
<?php
ini_set("soap.wsdl_cache_enabled", "0"); // disabling WSDL cache
$wsdl_path = "http://www.xxxxxxx/zzzzzzzzzz/service.asmx?WSDL";
$login_id = 'XXXX';
$password = 'YYYYYY';
$client = new SoapClient($wsdl_path, array('trace' => 1));
try {
echo "<pre>\n";
$result = $client->SOME_FUNCTION(array("request" => array("cedula" => $login_id, "contrasena" => $password)))
print_r($result);
echo "\n";
}
catch (SoapFault $exception) {
echo $exception;
}
?>
答案 1 :(得分:0)
我认为您非常接近使用此代码。我也赞扬StackOverflow上的这个答案,看起来非常类似于你的要求:
"Object reference not set to an instance of an object" error connecting to SOAP server from PHP
所以也许你应该直接拍摄方法,如下:
$client->SOME_FUNCTION(array("request" => array('cedula'=>'XXXX','contrasena'=>'YYYYYY'));
希望有所帮助! :)
答案 2 :(得分:0)
我认为在服务SOME_FUNCTION的wsdl中可能存在问题。
以下是服务列表: http://www.xxxxxx/zzzzzzzzzz/service.asmx
所有这些都有效,但SOME_FUNCTION并不适用。转到网址http://www.xxxxxx/zzzzzzzzzz/service.asmx?op=SOME_FUNCTION并尝试设置参数,然后点击调用。它将不起作用并抛出异常&#34;对象引用未设置为对象的实例。&#34;。 然后尝试另一个服务,它将工作并返回一些结果。
OTHER_FUNCTION服务的示例:
$param = array('estatus'=>'XXXX');
$client = new SoapClient("http://www.xxxxxx/zzzzzzzzzz/service.asmx?wsdl");
$result = $client->__soapCall('OTHER_FUNCTION', $param);
print_r($result);