3

这是这个紧迫的问题,经过几天的努力仍未解决。

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。这是为什么?

4

1 回答 1

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);
于 2012-05-09T16:04:58.987 回答