Nusoap,在Web服务中将数据返回为XML

时间:2012-12-20 16:34:56

标签: php xml soap nusoap

我有一个PHP soap服务器(使用nuSoap)和一个Java客户端(使用Axis2)。哪个效果不错,直到没有。

我要做的就是向服务发送代码,并返回文件名的XML列表。

<filename>20120413.zip</filename>

这是SSCE

<?
require_once('nusoap/lib/nusoap.php'); 
$server = new soap_server();
$server->configureWSDL('Download Database Backup', 'urn:downloadDatabase');

$server->register('getBackupFileNames',                                  // method
        array('herdCode' => 'xsd:string'), // input parameters
        array('fileList' => 'xsd:string'),                           // output parameters
        'urn:uploadDatabase',                                               // namespace
        'urn:uploadDatabase#uploadDatabase',                                       // soapaction
        'rpc',                                                       // style
        'encoded',                                                   // use
        'uploadDatabase'                                          // documentation
    );

 function getBackupFileNames($herdCode)
    {
    $location = "/home/rhythms/backups/" . $herdCode;
    $fileList = scandir($location);
    return $fileList;
    }//end function

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
?>

在紧要关头,我知道我可以做一个foreach并手动创建XML作为字符串。然而它得到了XMLEncoded。有没有更好的办法?我想在WSDL中默认发布它。我也尝试过complexType但是我在Axis2方面遇到了麻烦。

谢谢!

1 个答案:

答案 0 :(得分:0)

这不是一个直接的答案。我得到的是您可以使用SOAP-ARRAY复杂数据类型发送SOAP数组。但这不是一个很好的方法。相反,我将研究PHP提供的本机SOAP实现。

Axis2不能很好地处理SOAP-ARRAY复杂数据类型,所以我认为将我的实现调整为PHP的本机类型会更容易。

这留下了一个脚注,所以希望其他人不会像我试图找到一个好的SOAP实现一样。