Ein SOAP Webdienst erstellen

Was ist SOAP?

SOAP ist ein XML basiertes Protokoll für Daten Verteilung. Mit SOAP erstellen wir auf unserem Server eine Datenschnittstelle/API, die jeder anzapfen kann. Diese Datenschnittstelle kann komplexe Informationen beinhalten wie Funktionen, Objekte, Datentypen, Parameter, Rückgabewerte und einiges mehr. Zudem erreichen wir mit SOAP eine lose Kopplung unsere Systeme. Damit wären Client und Server unabhängig voneinander. Es können mehrere unterschiedliche Clients(Browser, Android, IOS, Mac, Windows…) geben die auf einem und dem selben Webdienst zurückgreifen.

Funktionsweise von SOAP

Der Server stellt ein XML Dokument zur verfügung. Der Client kann das XML Dokument aufrufen und verarbeiten. Ein SOAP Webdienst können wir über verschiedene Protokolle aufrufen wie zum Beispiel HTTP, FTP oder SMTP.

SOAP unter PHP5

PHP unterstützt SOAP seit der 5.0 Version. SOAP in der php.ini freischalten. php.ini auf meinem System finden.

extension=php_soap.dll //Semicolon am Anfang entfernen

Webdienst für den Server

Zuerst erstellen wir auf unserem Server eine Klasse, die wir später für andere Clients mit SOAP bereitstellen.

<?php
 
// WebService.php
 
/**
 * PHP Klasse
 */
class WebService
{
    public function sagHallo($name = "Max Mustermann")
    {
        return "Hallo ".$name;
    }
}

Unsere zuvor erstellte Klasse "WebService" können wir als Webdienst zur verfügung stellen, indem wir den "SOAPServer" Konstruktor aufrufen und unsere Klasse diesem übergeben.

<?php
 
// WebService.php
 
/**
 * SOAP Webservice erstellen
 */
$server = new SOAPServer( null, array(
 
    'uri' => 'http://localhost/sagHallo', // namespace
    'encoding' => 'UTF-8', // Zeichensatz
    'soap_version' => SOAP_1_2 // SOAP Version
 
));
 
/**
 * "WebService Klasse" als Service zur verfügung stellen
 */
$server->setClass('WebService');
 
/**
 * WebService ausführen
 */
$server->handle();

SOAPServer in Einzelheiten

Der erste Parameter ist eine WSDL Datei ( optional ). Der zweiter Parameter ist ein Array, für unsere Konfiguration.

uri

Namespace für unseren Webdienst

soap_version

SOAP_1_1 oder SOAP_1_2

encoding

Zeichensatz z.B UTF-8

Auf SOAP-Webdienst zugreifen

Obwohl wir unser SOAP-Webdienst mit PHP erstellt haben können wir trotzdem mit fast allen höheren Programmiersprachen darauf zugreifen. Zum Beispiel:

  • C/C++
  • PHP
  • Java
  • Python
  • Ruby
  • Objective-C

Wir rufen den SoapClient Konstruktor auf. Der erste Parameter erwartet eine WSDL Datei (Optional). Der zweiter Parameter ist ein Array, für unsere Konfiguration.

location

URL zum SOAP-Webdienst

uri

Referenz zum Namespace (ohne Host)

soap_version

SOAP_1_1 oder SOAP_1_2

<?php
 
// client.php
 
/**
 * SOAP Service aufrufen.
 */
$soap = new SoapClient(null, array(
 
    'location' => 'http://localhost/WebService.php',
    'uri' => 'http://sagHallo',
    'soap_version' => SOAP_1_2
 
));
 
/**
 * Die Methode sagHallo aufrufen.
 */
echo $soap->sagHallo("Dein Name");

Mit der "$soap" Variable haben wir einen vollständigen zugriff auf unsere zuvor erstellte Klasse "WebService".

SOAP-Webdienst per HTTP aufrufen: http://localhost/client.php

SOAP und WSDL

Bei "SOAPServer" und "SoapClient" können wir eine "WSDL Datei" übergeben. Wenn wir eine WSDL Datei haben benötigen wir keine weiteren Informationen zu übergeben. Da sich alle Informationen in der WSDL Datei befinden. WSDL ist eine XML basiertes Dokument und steht für "Web Services Description Language". Mehr dazu: WSDL Einführung

Zurück