2014-04-28 34 views
0

我有一个可用的web服务@http://www.xxxxx/zzzzzzzz/service.asmx,我试图发送一个带有两个参数的方法 - some_function的SOAP请求,但仍然无法获得连接。来自PHP的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; 

?> 

错误,那是我得到的是:

Fatal error: Uncaught SoapFault exception: [soap:Server] Server was unable to process request. ---> Object reference not set to an instance of an object. in /home/zzzz/XXXXXXXXXX.com/uni/index.php:6 Stack trace: #0 /home/zzzz/XXXXXXXXXX.com/uni/index.php(6): SoapClient->__soapCall('some_function' , Array) #1 {main} thrown in /home/zzzz/XXXXXXXXXX.com/uni/index.php on line 6

请提出更正。非常感谢提前:)

+0

嗨,您的详细信息在帖子的编辑历史记录中仍然可见。如果有敏感的东西,一定要在你的系统上安全。 – msturdy

回答

1

感谢@dootzky & @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;  
} 

?> 
0

我认为这可能是在服务SOME_FUNCTION的wsdl问题。

这里是服务的列表: http://www.xxxxxx/zzzzzzzzzz/service.asmx

所有这些工作,但SOME_FUNCTION没有。转到网址http://www.xxxxxx/zzzzzzzzzz/service.asmx?op=SOME_FUNCTION并尝试设置参数并单击调用。它将不起作用并抛出异常“对象引用未设置为对象的实例”。 然后尝试其他服务,它将工作并返回一些结果。

举例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);