0

我有一个 PHP 肥皂服务器(使用 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 端处理它时遇到了麻烦。

谢谢!

4

1 回答 1

0

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

Axis2 doesn't handle the SOAP-ARRAY complex datatype well, so I think it will be easier to adjust my implementation to PHP's native types.

This is left as a footnote so hopefully someone else won't fall down the same well I did as I was trying to find a good SOAP implementation.

于 2013-01-03T21:13:51.807 回答