Rene: Namespaces im SOAP-Server und Auswertung

Beitrag lesen

Hi,
für einen Kunden wollen wir einen Webservice einrichten. Der Kunde schickt uns Daten im folgenden Format:

<?xml version="1.0" encoding="UTF-8"?>  
<OTA_HotelInvCountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2009-10-14T17:17:45" Target="Production" Version="1">  
 <POS>  
  <Source AgentDutyCode="agentdutycode" AgentSine="agentsine">  
   <RequestorID ID="199976"/>  
  </Source>  
 </POS>  
 <Inventories>  
  <Inventory>  
   <StatusApplicationControl Start="2009-10-14" End="2009-11-10" InvTypeCode="140759" />  
   <InvCounts><InvCount Count="60" CountType="1" /></InvCounts>  
  </Inventory>  
  <Inventory>  
   <StatusApplicationControl Start="2009-11-10" End="2009-11-11" InvTypeCode="140759" />  
   <InvCounts><InvCount Count="0" CountType="1" /></InvCounts>  
  </Inventory>  
 </Inventories>  
</OTA_HotelInvCountNotifRQ>

Wie man erkennen kann, wird ein eigener Namespace "http://www.opentravel.org/OTA/2003/05" verwendet.

Der Server sieht derzeit nur so aus:

<?php  
function OTA_HotelInvCountNotifRQ($test) {  
   return $test;  
}  
$server = new SoapServer(NULL, array('uri' => "http://www.opentravel.org/OTA/2003/05"));  
$server->addFunction('OTA_HotelInvCountNotifRQ');  
$server->handle();  
?>

Der XML-Code wird mittels curl an den Server gesendet:

  
...  
$result = curl_exec($ch);  
if($result === false){  
   echo '<p>Fehler: '.curl_error($ch);  
} else {  
   echo '<p>Ergebnis:'. $result;  
}

Ausgegeben wird folgender Fehler:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:VersionMismatch</faultcode><faultstring>Wrong Version</faultstring></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>

Der curl-Request an sich funktioniert demnach. Nur scheinen Client und Server im Namespace nicht übereinzustimmen. Was muss ich im Server-Skript angeben, damit es keinen Versions-Konflikt mehr gibt? Oder bin ich komplett auf der falschen Fährte?

Und wie kann ich den Request mit der Funktion OTA_HotelInvCountNotifRQ auswerten? Ich benötige z. B. auch die Angabe "RequestorID".