Hallo liebe Gemeinde!
Ich glaube ich stehe gerade aufm Schlauch beim zusammenbauen einer SOAP-Message, im speziellen Fall des Response.
Ich benutze php 5.2.5 und habe mir einen soap-server mit WSDL erstellt, soweit so gut. Nun muss das Ding ja auch antworten, das klappt auch, aber halt nicht in der gewünschten XML-Struktur.
Das Ding funktioniert schonmal, ich komme in der Klasse Event an und kann dort die einzelnen Properties rausholen und weiter verwursten.
Als Response soll die Klasse Result mit 3 Properties zurückgeschickt werden.
Fülle ich das ganze nun mit Leben und
Bekomme ich folgendes Ergebnis:
Ich hätte jetzt erwartet, dass ich unterhalb der Eventresponse die Struktur meines Result-Objekts wieder fiinde. Habe ich da irgendwie was generell missverstanden?
Nächster Versuch war mit SAOPVAR(...), auch mit mäßigem Erfolg:
Das liefert mir:
Hat vielleicht jemand nen Tipp, wo ich da falsch denke?
Danke schön!
Ich glaube ich stehe gerade aufm Schlauch beim zusammenbauen einer SOAP-Message, im speziellen Fall des Response.
Ich benutze php 5.2.5 und habe mir einen soap-server mit WSDL erstellt, soweit so gut. Nun muss das Ding ja auch antworten, das klappt auch, aber halt nicht in der gewünschten XML-Struktur.
PHP-Code:
$server = new SoapServer("Events.asmx.wsdl",array('soap_version' => SOAP_1_2));
$server->setClass("Events");
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$server->handle();
} else
{
echo "This SOAP server can handle following functions: ";
$functions = $server->getFunctions();
foreach($functions as $func) {
echo $func . "\n";
}
}
Als Response soll die Klasse Result mit 3 Properties zurückgeschickt werden.
PHP-Code:
class Result
{
public $TransactionGUID;//string
public $Nr;//int
public $Description;//string
}
PHP-Code:
$EventResult = new Result();
$EventResult->TransactionGUID= $this->TransactionGUID;
$EventResult->Nr = 0;
$EventResult->Description="OK";
return $EventResult;
Code:
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://somewhere.de/my_server.php"> <env:Body> <ns1:EventResponse/> </env:Body> </env:Envelope>
Nächster Versuch war mit SAOPVAR(...), auch mit mäßigem Erfolg:
PHP-Code:
$MMSReceivedEventResult = new SoapVar(array("EventResult"=>array($this->TransactionGUID=>"TransactionGUID")) ,SOAP_ENC_OBJECT );
Code:
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://somewhere.de/my_server.php"> <env:Body> <ns1:EventResponse> <EventResult> <item> <key>42bd79fa-985a-47e2-9d97-0ed4b1a274ed</key> <value>TransactionGUID</value> </item> </EventResult> </ns1:EventResponse> </env:Body> </env:Envelope>
Danke schön!
Kommentar