webservice mit nusoap - funktionsrückgabe - array

jogisarge

Grünschnabel
Hallo zusammen !

ich versuche gerade einen Webservice mit nusoap zu erstellen.
PHP:
$soap = new soap_server();
$soap->configureWSDL('TEST', 'http://www.test.de/');
$soap->wsdl->schemaTargetNamespace = 'http://soapinterop.org/xsd/';
  
$soap->register(
      'strtest',
      array(
        'p1' => 'xsd:string',
        'p2' => 'xsd:string'
      ),
      array(
        'erg' => 'xsd:string'
      ),
      'http://soapinterop.org/'
    );
    $soap->service(isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '');
    function strtest($p1,$p2)
    {
        return "BLA ".$p1." BLA . ".$p2." ";
    }
Nun möchte ich eine Funktion erstellen, die ein Array zurückgibt.
Da ich mir von Nusoap die wsdl-Datei generieren lasse, und weiter verwende, müsste ich in der register() Funktion, die Rückgabewerte definieren
Wie definiert man eine funktion, die ein Array als Rückgabewert haben ,muss


bye jogi
 
Moin Jogi,

meinst du so:?
PHP:
function funktion($p1,$p2)
    {
        return(func_get_args());
    }

(Das würde alle der Funktion übergebenen Parameter als Array zurückgeben)
 
Hallo nochmal,

ich beschreibe mal genauer:
ich möchte eine Funktion, die eine ArrayList übergeben bekommt.
PHP:
require_once 'nusoap.php';
$soap = new soap_server();
$soap->configureWSDL('IDSTEST', 'http://www.mlt-server.de/');
$soap->wsdl->schemaTargetNamespace = 'http://soapinterop.org/xsd/';
$soap->service(isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '');

$funkarray[0] = array("parm1"="1","parm2"="Auto","parm3"="gruen");
$funkarray[1] = array("parm1"="2","parm2"="Fahrrad","parm3"="rot");
$funkarray[2] = array("parm1"="3","parm2"="Motorrad","parm3"="blau");

function strtest($farray)
{
    ... Verarbeitung
    return $ergarray;
}
d.h. ich möchte eine ArrayList übergeben, und eine ArrayList zurückbekommen.
wie muss ich so eine Funktion mit $soap->register() registrieren, damit das WSDL korrekt erzeugt wird ?

Gruß jogi
 
an dieser sache habe ich auch etwas länger rum gebastelt.

PHP:
//addComplexType. Wird benötigt um Array über return auszugeben
   $server->wsdl->addComplexType('Ausgabe');

   $server -> register ('Beispiel_function',
            //Übergabe werte an die Funktion
                        array('ue1' => 'xsd:string', 'ue2' => 'xsd:string'),
     //Und genau hier kommt der Springende Punkt oben musst du bei addComplexType
     //einen Namen festlegen, hier Ausgabe und dann machst du bei deinem return
     //anstatt xsd:string -> tns:Ausgabe (namen von addComplexType)
                        array('return' => 'tns:Ausgabe')

                 );

wenn was nicht klappt melde dich nochmal müsste aber so gehen. :-)
 
Zuletzt bearbeitet:
Zurück