Webservice per SOAP ansprechen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Webservice per SOAP ansprechen

    Hallo zusammen,

    ich versuche einen Webservice mit PHP via SOAP anzusprechen.
    Der Webservice erwartet von mir folgende XML Struktur:

    Quellcode

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    4. xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    5. <soap:Header>
    6. <LoginControl xmlns="http://server.de/o2Web/o2Con">
    7. <username>string</username>
    8. <password>string</password>
    9. </LoginControl>
    10. </soap:Header>
    11. <soap:Body>
    12. <GetItemInfo xmlns="http://server.de/o2Web/o2Con">
    13. <InItemsRows>
    14. <InItemsRow>
    15. <ItemID>int</ItemID>
    16. <Quantity>double</Quantity>
    17. </InItemsRow>
    18. <InItemsRow>
    19. <ItemID>int</ItemID>
    20. <Quantity>double</Quantity>
    21. </InItemsRow>
    22. </InItemsRows>
    23. </GetItemInfo>
    24. </soap:Body>
    25. </soap:Envelope>
    Alles anzeigen


    Ich habe mir die PHP doku bezüglich SOAP durchgelesen, aber leider ist mir unklar, wie ich diese Struktur mit diesen Mitteln hinbekomme.

    Mein erster Versucht war:

    Quellcode

    1. $client = new SoapClient("https://server.de/o2Web/o2Con.asmx?WSDL",array('trace' => 1));
    2. $parms = array('Quantity' => 5,
    3. 'ItemID' => 4757380);
    4. $result = $client->__soapCall("GetItemInfo",$parms);

    Als Meldung kommt

    Quellcode

    1. "Anmeldeinformationen erforderlich (Kundennummer/Kennwort)."


    Desweiteren ist der Webservice per Soap Header geschützt.

    Kann mir jemand weiterhelfen, wie man das macht?

    Gruß jogi
  • Hi,

    ich habe noch keine Authentifizierung mit PHP und SOAP gemacht, aber nach dem Manual sollte es ungefähr so gehen:

    Quellcode

    1. $client = new SoapClient("....");
    2. $x = array();
    3. $x["username"]="jogisarge";
    4. $x["password"]="*****";
    5. $x = new SoapVar($x, SOAP_ENC_OBJECT, "LoginControl","http://server.de/o2Web/o2Con");
    6. $client->__setSoapHeaders(array(new SoapHeader('http://www.itworks.nl/','AuthenticationHeader',$x)));


    Ansonsten schau dir nochmal das Manuela zu SoapHeader genauer an oder frag einfach nochmal.
    In unserem Wiki haben wir SOAP Header auch verwendetet: [wiki]PHP SOAP Server mit WSDL und API Schlüssel[/wiki]