Soap Antwort verarbeiten
jogi
- php
1 dedlfix
hallo zusammen !
ich empfage nach einem HTTP POST folgende Nachricht:
[PHP]
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
soap:Header
<LoginControl xmlns="http://server.de/w2Connect">
<username>user</username>
<password>pass</password>
</LoginControl>
</soap:Header>
soap:Body
<GetItemInfo xmlns="http://server.de/w2Connect">
<InItemsRows>
<InItemsRow>
<ItemID>24324</ItemID>
<Quantity>1</Quantity>
</InItemsRow>
<InItemsRow>
<ItemID>2323</ItemID>
<Quantity>1</Quantity>
</InItemsRow>
</InItemsRows>
</GetItemInfo>
</soap:Body>
</soap:Envelope>
[/PHP]
ich versuche das so zu verarbeiten:
[PHP]
echo $data;
$xml = new SimpleXMLElement($data);
echo "<br>--------------------------------------<br>";
echo "<pre>";
print_r($xml);
echo "</pre>";
echo "<br>--------------------------------------<br>";
var_dump($xml);
[/PHP]
im ersten $data steht der XML String, wie dargestellt.
print_r und var_dump ergeben das
[PHP]
--------------------------------------
SimpleXMLElement Object
(
)
--------------------------------------
object(SimpleXMLElement)#1 (0) { }
[/PHP]
wie komme ich an die XML Elemente ?
Die Anfrage an den Server stelle ich per HTTP POST mit fputs.
Gruß jogi
echo $begrüßung;
ich empfage nach einem HTTP POST folgende Nachricht:
[PHP]
<?xml version="1.0" encoding="utf-8"?>
Warum markierst du XML-Code als PHP? Außerdem funktioniert das in diesem Forum anders.
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
soap:Header
Du hast hier Namespaces, die du bei der weiteren Verarbeitung berücksichtigen musst. Schau dir dazu die Kommentare im PHP-Handbuch an, um Beispiele zu finden.
Nach ein wenig probieren gelang es mir, so auf den Benutzernamen zuzugreifen:
$xml = new SimpleXMLElement($data, null, null, "http://schemas.xmlsoap.org/soap/envelope/");
echo $xml->children("http://schemas.xmlsoap.org/soap/envelope/")->Header->children()->LoginControl->username;
echo "$verabschiedung $name";