Webservice testen am Beispiel von DHL

Wenn Sie ein Abonnement des Magazins 'DATENBANKENTWICKLER' besitzen, können Sie sich anmelden und den kompletten Artikel lesen.
Anderenfalls können Sie das Abonnement hier im Shop erwerben.

Webservice testen am Beispiel von DHL

Wer einen Webshop betreibt, kennt sich zumindest mit den Webseiten des einen oder anderen Paketdienstes aus. Dabei gibt es beim Erstellen von Versandetiketten für Pakete verschiedene Stufen der Automatisierung. Wir wollen zur Stufe der höchsten Automatisierung gelangen und unsere Daten für den Versand direkt an den Webservice eines Anbieters, in diesem Fall DHL, weiterleiten und die erstellten Versandetiketten in druckbarer Form herunterladen. Dazu erfahren Sie in diesem Artikel, wie Sie einen Webservice mithilfe des Tools SoapUI testen.

Von der Handarbeit zur Vollautomatisierung

Wer es nicht so mit dem Internet hat, holt sich ein paar Paketscheine von der Post, füllt diese händisch mit den Adressen der Empfänger aus und sendet diese dann ab. Bei kleinen Mengen mag das ein sinnvoller Ansatz sein. Wer hingegen gleich ein paar Lieferungen pro Tag verschickt, gibt die Daten vielleicht direkt in die Eingabemaske der Webseite dhl.de ein. Hier können Sie alle relevanten Daten angeben – von der Paketgröße über das Gewicht bis hin zu den Absender- und Empfängerdaten. Wer regelmäßig Pakte versendet, möchte aber vielleicht noch etwas Geld sparen und nutzt den Geschäftskundentarif statt den für Privatkunden. Dann ist www.dhl-geschaeftskundenportal.de die richtige Adresse. Hier benötigen Sie allerdings ein Kundenkonto – auf die Schnelle ein Paket verschicken und per Paypal bezahlen können Sie hier nicht. Als registrierter Kunde loggen Sie sich dann auf der Seite ein und können über den Menüpunkt Versenden|Versenden (Intraship) zur Versandschnittstelle wechseln (siehe Bild 1).

Aufruf des Dienstes Intraship

Bild 1: Aufruf des Dienstes Intraship

Hinweis: Zum Testen der in späteren Beispielen vorgestellten Zugriffe auf den Webservice von DHL benötigen Sie ein Entwickler-Konto bei DHL. Wie Sie dieses anlegen, erfahren Sie weiter unten.

Hier haben Sie dann einige weitere Möglichkeiten. Dazu gehört das Anlegen eines neuen Auftrags, wobei Sie allerdings nur das Gewicht und die Empfängeradresse eintragen müssen – die Absenderadresse für Ihr Kundenkonto wird in den Einstellungen gespeichert und automatisch hinzugefügt. Außerdem können Sie hier einen Import von Aufträgen durchführen, wozu sie auf den entsprechenden Link klicken (siehe Bild 2).

Versandschnittstelle

Bild 2: Versandschnittstelle

Damit landen Sie auf einer Seite, auf der Sie die Datei mit den dafür vorbereiteten auswählen und die enthaltenen Daten einlesen können. Nach dem Import zeigt die Seite die eingelesenen Sendungen in einer Liste an und Sie können diese markierten und ausdrucken oder auch stornieren. Nach dem Ausdrucken öffnet sich ein weiteres Fenster mit einer PDF-Datei, welche die Versandetiketten enthält. Diese drucken Sie nun noch auf entsprechendem Papier aus. Dieses stellt DHL seinen Geschäftskunden kostenlos zur Verfügung (siehe Bild 3).

Auswahl einer Empfängerliste

Bild 3: Auswahl einer Empfängerliste

Nun wollen wir dies alles komplett automatisieren. Das heißt, dass wir gar keinen Internetbrowser mehr öffnen wollen, sondern aus unserer Anwendung heraus einen Webservice aufrufen wollen, dem wir die Absender- und Empfängerdaten und die Angaben zur Sendung übermitteln wollen und der uns die Etiketten dann in der Antwort zur Verfügung stellen soll.

DHL für Entwickler

Damit landen wir dann auf der Seite entwickler.dhl.de. Hier können Sie nun unkompliziert ein Entwicklerkonto erstellen – die einzelnen Schritte wollen wir hier nicht darstellen. Nach dem Anlegen des Entwicklerkontos und dem Anmelden im Portal finden Sie eine Auswahl der verfügbaren APIs (siehe Bild 4). Uns interessiert im Moment vor allem die API für den Geschäftskundenversand.

Einige der verfügbaren APIs

Bild 4: Einige der verfügbaren APIs

Webservice ansehen

Wenn Sie sich in den Informationen zur API für Geschäftskunden umsehen, finden Sie zunächst heraus, wo Sie die WSDL-Datei des Webservices finden, nämlich unter folgendem Link:

https://cig.dhl.de/cig-wsdls/com/dpdhl/wsdl/geschaeftskundenversand-api/2.2/geschaeftskundenversand-api-2.2.wsdl

Was Sie damit alles anstellen können, schauen wir uns mit einem speziellen Tool namens SoapUI an, mit dem Sie den Webservice auch testen können, ohne auch nur eine Zeile Code zu programmieren. Dieses laden Sie von der Seite https://www.soapui.org/ herunter und installieren es. Danach starten Sie SoapUI und klicken auf den Menüeintrag File|Create Empty Project.

Klicken Sie dann mit der rechten Maustaste auf den neuen Eintrag und wählen Sie den Kontextmenü-Eintrag Add WSDL aus (siehe Bild 5).

Hinzufügen einer WSDL

Bild 5: Hinzufügen einer WSDL

Es erscheint ein kleiner Dialog, in dem Sie unter WSDL Location den Link mit der WSDL-Datei eintragen (siehe Bild 6). Behalten Sie die Einstellung Create sample requests for all Operations? bei und klicken Sie auf OK.

WSDL eingeben

Bild 6: WSDL eingeben

Anschließend zeigt SoapUI im Bereich Projects alle Funktionen des Webservices mit der soeben analysierten WSDL-Datei an (siehe Bild 7).

Funktionen des Webservices

Bild 7: Funktionen des Webservices

Nun wollen wir einen Request zum Testen der Funktion getLabel des Webservice erstellen – getLabel hört sich so an, also ob es unsere Aufgabe, ein Label auf Basis der Versanddaten zu erstellen, erfüllen könnte. Dazu klicken Sie wieder mit der rechten Maustaste auf getLabel und wählen den Eintrag New request aus dem Kontextmenü aus. Geben Sie nun als Namen getLabelRequest ein und schauen Sie sich den Inhalt des nun geöffneten Fensters an.

Hier finden wir ein Element vor, dass die für die Authentifizierung notwendigen Daten entgegennimmt und einen Body, in den Sie eine Version eingeben und bis zu 30 shipmentNumbers eingeben können (siehe Seite ). Das sieht doch eher danach aus, als ob man hier bereits erstellte Label anfragen kann statt neue anzulegen. Also müssen wir wohl doch noch einen Blick auf die übrigen Funktionen des Webservice werfen.

<soapenv:Envelope xmlns:soapenv="...">
    <soapenv:Header>
       <cis:Authentification>
          <cis:user>?</cis:user>
          <cis:signature>?</cis:signature>
       </cis:Authentification>
    </soapenv:Header>
    <soapenv:Body>
       <bus:GetLabelRequest>
          <bus:Version>
             <majorRelease>?</majorRelease>
             <minorRelease>?</minorRelease>
             <!--Optional:-->
             <build>?</build>
          </bus:Version>
          <!--1 to 30 repetitions:-->
          <cis:shipmentNumber>?</cis:shipmentNumber>
          <!--Optional:-->
          <labelResponseType>?</labelResponseType>
       </bus:GetLabelRequest>
    </soapenv:Body>
</soapenv:Envelope>

Listing 1: Request getLabel mit Platzhaltern

Request testen

Schnell zeigt sich, dass CreateShipment­Order die passende API-Funktion ist. Also erstellen wir einen neuen Request auf Basis diese Funktion. Das schöne am Tool SoapUI ist: Sie können bereits jetzt einfach einmal einen Request absenden und erhalten die Antwort direkt im gleichen Fenster. In diesem Fall weist uns die Antwort darauf hin, dass wir keine Authentifizierungsdaten eingegeben haben (siehe Bild 8).

Absenden eines ersten Requests

Bild 8: Absenden eines ersten Requests

Also kümmern wir uns erst einmal um diese Daten. Diese finden Sie in der Onlinedokumentation. In diesem Fall heißt der Benutzer 2222222222_01 und das Kennwort pass. Außerdem müssen wir den Endpunkt für den Webservice ändern, denn nach dem Einlesen der WSDL-Datei lautet dieser auf dem Endpunkt für den Produktivbetrieb. Zum Testen gibt es natürlich einen eigenen Endpunkt, der https://cig.dhl.de/services/sandbox/soap lautet und den Sie in SoapUI für die Eigenschaft Endpoint in den Request Properties einstellen. Allerdings ist der Sandbox-Endpunkt dort noch nicht vorhanden, weshalb Sie diesen noch hinzufügen müssen.

Endpunkt zum Testen anlegen

Dazu klicken Sie im Bereich Navigator doppelt auf das Element unterhalb des Projekt-Elements, dass in unserem Beipsiel GKVAPISOAP11Binding genannt wurde. Es erscheint ein gleichnamiger Dialog, in dem Sie auf die Registerseite Service Endpoints wechseln.

Hier klicken Sie auf das Plus-Symbol, um einen neuen Endpoint anzulegen und tragen dort den Wert https://cig.dhl.de/services/sandbox/soap ein (siehe Bild 9).

Neuen Endpoint hinzufügen

Bild 9: Neuen Endpoint hinzufügen

Neuen Endpunkt auswählen

Dies war die Leseprobe dieses Artikels.
Melden Sie sich an, um auf den vollständigen Artikel zuzugreifen.

Bitte geben Sie die Zeichenfolge in das nachfolgende Textfeld ein

Die mit einem * markierten Felder sind Pflichtfelder.

Ich habe die Datenschutzbestimmungen zur Kenntnis genommen.