Moin,
zunächst mal Grüße und herzlichen Dank an alle die hier so selbstlos mit Rat und Tat zur Seite stehen. Ich habe mich gerade neu angemeldet muss aber gestehen, dass ich dann und wann schon Infos aus eurem Forum verwendet habe. Bisher brauchte ich mich nicht anmelden weil alle meine Probleme schnell durch die Suche gelöst werden konnten. Mir ist aber klar, dass das keine Einbahnstraße ist und so will ich versuchen mich auch mit meinem KnowHow hier zu beteiligen.
Leider muss ich erst mal wieder gleich mit einer Frage anfangen weil alle Suchen immer irgendwie ins leere laufen. Ich bearbeite ein größeres Projekt in dem Daten von einem online Shop per SOAP in eine WAWI übertragen werden sollen. Die Schnittstelle ist von Seiten der WAWI vorgegeben und dort bereits implementiert. Dabei arbeite ich dort mit einer .wsdl in Zusammenhang mit einer .xsd als Schema des ganzen.
Den gesamten Code der beiden Dateien zu schicken wäre etwas viel deshalb nur Auszüge: in der .wsdl gibt es eine Methode retrunBestellung
PHP-Code:
<wsdl:message name="getBestellung">
<wsdl:part name="data" element="my:bestellung"/>
</wsdl:message>
in der .xsd ist bestellung so beschrieben:
PHP-Code:
<xs:element name="bestellung">
<xs:complexType>
<xs:sequence>
<xs:sequence>
<xs:element name="idf" type="my:idf"/>
<xs:element name="version" type="xs:string" fixed="2.1"/>
</xs:sequence>
<xs:choice>
<xs:element name="daten" type="xs:base64Binary">
</xs:element>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
das Element daten hat folgenden Aufbau:
PHP-Code:
<xs:element name="bestelldaten">
<xs:complexType>
<xs:sequence>
<xs:element name="idf" type="iks:idf">
</xs:element>
<xs:element name="nr" type="xs:positiveInteger">
</xs:element>
<xs:element name="mail" type="xs:string">
</xs:element>
<xs:element name="shopversion" type="xs:string">
</xs:element>
<xs:element name="bestellzeit" type="xs:dateTime"/>
<xs:element name="kundennummer" type="iks:kundennummer">
</xs:element>
<xs:element name="auftragsnummer" type="iks:auftragsnummer">
</xs:element>
<xs:element name="kommentar" type="iks:kommentar" minOccurs="0" maxOccurs="unbounded"/>
........
</xs:sequence>
</xs:complexType>
</xs:element>
so weit so gut funzt auch alles recht annehmbar. Zumindest in der ersten Ebene. Soll heißen ich befülle den Response per .wsdl auf folgende weise:
PHP-Code:
public function getBestellung(){
$bestellung = array(
'idf' => '1234567',
'version' => '2.1',
'daten' => array(
'idf' => '1234567',
'aponr' => '4711',
'apomail' => self::$apoMail,
'shopversion' => '1.5',
'bestellzeit' => '2006-12-12T08:00:00',
'kundennummer' => '4711',
'auftragsnummer' => '0815',
'kommentar' => 'kein Kommentar',
)
);
wie gesagt alles hier zu posten würde den Rahmen sprengen es gibt eine Serverklasse und die Verbindung zur Soap steht auch. Das habe ich sowohl über eine einfache client.php direkt im Browser als auch über den WebServiceExplorer in Eclipse geprüft. Die "idf" und "version" wird richtig angesprochen und ich bekomme auch die korrekten Werte angezeigt.
So viel zur Vorgeschichte nun mein eigentliches Problem mit dem ich mich schon die ganze Woche beschäftige

Wie kann ich "daten" richtig befüllen? Anscheinend habe ich mir das mit dem zweidimensionalen array etwas einfach gemacht. Erschwerend kommt noch hinzu, dass in "daten" noch einige <complexType> enthalten sind die nach meiner Methode wieder über ein Array befüllt werden müssten. Aber ich denke wenn ich das in einer Ebene geschafft habe ist es egal wie viele Unterebenen es gibt.
Über print_r() lasse ich mir die Antwort des SOAP - Server ausgeben die sieht folgender maßen aus:
stdClass Object
(
[idf] => 1234567
[version] => 2.1
[daten] => Array
)
deshalb gehe ich davon aus, dass das [daten] Array nicht richtig gefüllt ist, denn sonnst müsste ich ja diese auch Angezeigt bekommen.
Ich weiß das alles ist sehr komplex und deshalb auch nicht so einfach zu beschreiben. Auf den Punkt gebracht suche eine Möglichkeit einen <complexType> innerhalb eines <complexType> richtig zu befüllen. Wenn jemand mein Kauderwelsch verstanden hat währe ich für jeden Denkanstoß dankbar.
vielen Dank