PHP SOAP服务器根本没有返回值

时间:2012-05-09 15:54:03

标签: php soap wsdl

这是一个紧迫的问题,经过几天的努力还没有解决。

http://www.tabernus.com/ws/soap/server.php?WSDL应该为您提供WSDL文件。

在server.php中,我希望在调用“GetAuditInformation”方法时返回递增的序列号。

所以我在顶部编写了这个简单的函数:

 <?php 
 function GetAuditInformation($serialNumber) {
 $serialNumber=$serialNumber +1;
 return $serialNumber;        
 }

 ini_set("soap.wsdl_cache_enabled", "0");
 $server = new SoapServer('wsMRMAudit.wsdl');
 $server->addFunction("GetAuditInformation"); 
 $server->handle();

?>

我使用plumvoice SOAPtester测试,它能够通过WSDL获取方法。

http://www.plumvoice.com/soaptester/

但是输入序列号说.... 1000并且它应该返回1001但它返回NULL。这是为什么?

1 个答案:

答案 0 :(得分:3)

传递给函数的参数不是数字,而是一个对象。你的函数定义应该是:

function GetAuditInformation($x)
{
    return array('GetAuditInformationResult' => $x->SerialNumber + 1);
}

对于完整的示例,让我发布我的测试脚本,它的工作原理是:

$s = new SoapClient('http://www.tabernus.com/ws/soap/server.php?WSDL', array('trace'=>true));

var_dump($s->GetAuditInformation(array('SerialNumber' => 1000)));

$req = $s->__getLastRequest();

function GetAuditInformation($x)
{
return array('GetAuditInformationResult' => $x->SerialNumber + 1);
}

$server = new SoapServer('http://www.tabernus.com/ws/soap/server.php?WSDL', array(
    'actor' => 'http://www.tabernus.com/ws/soap/',
    'soap_version' => SOAP_1_2
));
$server->addFunction('GetAuditInformation');

$server->handle($req);