SOAP Schnittstellen und PHP – Teil 2

Im ersten Teil habe ich euch die SOAP Schnittstelle von PHP kurz vorgestellt. Nun zeige ich wie man einen SOAP Client mit PHP erstellt. In diesem Artikel zeige ich auch wie man konkrete Daten von einer Schnittstelle abfragen kann. Dafür gibt es einige unterschiedliche Möglichkeiten.

SOAP Schnittstellen

SOAP Schnittstellen

Eine SOAP Schnittstelle ist eine recht einfache Art Daten für externe Programme bereitszustellen. SOAP Schnittstellen sind dabei sehr beliebt und kommen bei sehr vielen Web-Projekten zum Einsatz. Als Web Entwickler wird man mit SOAP immer wieder konfrontiert.

Funktionen und Typen

Wenn man die Schnittstelle noch nicht kennt, dann ist der erste Schritt, dass man sich die Funktionen und Typen die von der Schnittstelle akzeptiert werden anzeigen lässt. Das geht folgendermaßen:

Der SOAP Client bietet dafür zwei Funktionen __getFunctions() liefert alle Funktionen in einem Array und __getTypes() liefert alle Typen in einem Array. Wichtig sind hier vor allem die Funktionen. Denn man kann mit der Schnittstelle nicht mehr machen, als es hier an Funktionalität gibt.

Funktionen aufrufen

Nehmen wir an, der oben ausgeführt Code brachte unter anderem folgendes Ergebnis:

Offensichtlich können wir von der Schnittstelle eine Liste mit Produkten abfragen. Das funktioniert folgendermaßen. Wir erstellen einen ProduktlisteRequest, senden diesen an die Schnittstelle und bekommen von ihr einen ProduktlisteResponse. Was ist das? Wer sich einmal näher die WSDL angesehen hat wird feststellen, dass dort definiert ist, wie eben dieser Request bzw. Response auszusehen hat. Genau diese XML Struktur müssen wir nachbauen und mit unseren Daten füllen.

__soapCall

Mit dieser Funktion kann man über den SOAP Client einfach eine Funktion aufrufen. Welche das sein soll kann man als String im ersten Parameter angeben. Der zweite Parameter sollte dann der Request sein:

Als Ergebnis bekommen wir hier unseren Response, welchen wir testweise ausgeben.

Nach dem Funktionsnamen

Alternativ zu der oben genannten Möglichkeit kann man eine Funktion auch direkt über ihren Namen aufrufen. In unserem Testfall würde das so gehen:

Request Objekt erstellen

Das Request Objekt wird der SOAP Funktion übergeben und wird an das Web Service geschickt. Im Prinzip ist das Request Objekt nicht mehr als ein XML Objekt, dass den Regeln der SOAP Schnittstelle gehorcht. Es gibt aber unterschiedliche Möglichkeiten so ein Objekt zu erstellen.

Array Request

Die einfachste Art einen Request zu erstellen ist der eines einfachen Arrays. Dabei ist es sehr wichtig die korrekte Verschachtelung mit der selben Hierarchie wie beim XML zu erzeugen. Hier mal ein Beispiel:

  • für __soapCall
  • für Aufruf mit Funktionsnamen

Man beachte hier, dass man bei dem Aufruf über __soapCall auch die Ebene mit dem benannten Array ‚parameters‘ einfügen muss. In diesem Beispiel wollen wir von der Schnittstelle eines Webshops alle Unterwäsche der Größe M haben.

stdClass

Eine etwas übersichtlichere Möglichkeit ist das Erstellen einer stdClass Hierarchie. Das ist hinsichtlich der unzähligen Klammern vor allem bei komplexen Arrays sehr hilfreich. Hier wird gezeigt, wie dan oben genannte Beispiel mit stdClass aussieht:

Ich hoffe ich konnte mit diesem Artikel jedem Leser weiterhelfen. Bei Fragen bitte einfach ein Kommentar schreiben.

Fazit

SOAP Schnittstellen sind sehr weit verbreitet und als Web Entwickler stößt man bei größeren Projekten immer wieder auf externe Systeme die SOAP Schnittstellen benutzen. Ein solides Wissen darüber ist somit unbedingt erforderlich.

Teil 1 | Teil 2

(Visited 2.199 times, 1 visits today)

Das könnte auch interessant sein...

2 Antworten

  1. Steffen B. sagt:

    Hi,
    vielen dank für deine Anleitung. Mir hat es den Start mit SOAP deutlich vereinfacht.

    Gruß

  2. Dave sagt:

    Super. Danke für den Beitrag!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.