2012-12-20 2 views
0

PHP 비누 서버 (nuSoap 사용)와 Java 클라이언트 (Axis2 사용)가 있습니다. 그것은 잘되지 않을 때까지 꽤 잘됩니다.Nusoap, 웹 서비스에서 XML로 데이터 배열을 반환하십시오.

내가하려고하는 요점은 서비스에 코드를 보내고 파일 이름의 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 측에서 처리하는 데 문제가있었습니다.

감사합니다.

답변

0

이것은 직접적인 대답이 아닙니다. SOAP-ARRAY 복합 데이터 형식을 사용하여 SOAP 배열을 보낼 수 있습니다. 그러나 아주 좋은 방법은 아닙니다. 대신 PHP에서 제공하는 SOAP 구현을 조사 할 것입니다.

Axis2는 SOAP-ARRAY 복합 데이터 유형을 잘 처리하지 않으므로 구현을 PHP 기본 유형으로 쉽게 조정할 수 있다고 생각합니다.

이것은 각주로 남겨 두었습니다. 좋은 SOAP 구현을 찾으려고 할 때 다른 사람이 내가했던 것과 똑같은 우물물에 떨어지지 않기를 바랍니다.