这是一个紧迫的问题,经过几天的努力还没有解决。
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。这是为什么?
答案 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);