我有一个 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 端处理它时遇到了麻烦。
谢谢!