【问题标题】:PHP SOAP server not returning value at allPHP SOAP服务器根本不返回值
【发布时间】:2012-05-09 15:54:02
【问题描述】:

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

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

【问题讨论】:

    标签: php soap wsdl


    【解决方案1】:

    传入函数的参数不是数字,而是对象。你的函数定义应该是这样的:

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

    【讨论】:

    • close... 我只在“GetAuditInformationResult”中得到“Object” - 为什么是“object”?它应该返回递增的序列号。谢谢!
    • 越来越近了......它确实返回了数字,但它没有从客户端获取值......就像说客户端向我们发送 1 我应该返回 2 但显然,它仍然设置1,因为它没有从客户那里获得价值。
    • 更新了答案以包含我的完整测试脚本,效果很好。
    猜你喜欢
    • 2014-01-13
    • 2019-04-28
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    • 2018-05-20
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多