PHP SOAP サーバー (nuSoap を使用) と Java クライアント (Axis2 を使用) があります。それがうまくいかなくなるまで、これはかなりうまくいきます。
私がやろうとしていることの要点は、サービスにコードを送信し、ファイル名の XML リストを返すことです。
<filename>20120413.zip</filename>
SSCはこちら
<?
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 側での処理に問題がありました。
ありがとうございました!