Datentausch per Webservice

Teil 3: Webservices mit PHP selbst gemacht

In der Regel wird man die Erstellung der WSDL-Datei und das Starten des Servers in einer Datei vereinen.

require_once "HelloWorldService.php";
require_once "Zend/Soap/Server.php";
require_once "Zend/Soap/
AutoDiscover.php";
if(isset($_GET['wsdl'])) {
$autodiscover = new Zend_Soap_
AutoDiscover();
$autodiscover->setClass
('HelloWorldService');
$autodiscover->handle();
}
else {
$soap = new Zend_Soap_Server
("http://localhost/service.php?wsdl");
$soap->setClass
('HelloWorldService');
$soap->handle();
}

SOAP-Client

Die Verwendung dieses Webservices kann mit verschiedenen Programmiersprachen erfolgen. Dies kann selbstverständlich auch PHP sein. Auch hierzu bietet das Zend- Framework entsprechende Klassen an. Der im folgenden Listing gezeigte Aufruf der Webservice-Klasse kann selbstverständlich auf einem ganz anderen Server erfolgen, dies ist ja auch der Sinn und Zweck eines Webservices. Für unsere Zwecke genügt es aber, den Client auf demselben Webserver zu platzieren wie den Server.

require_once "Zend/Exception.php";
require_once "Zend/Soap/Client.php";
try {
// Erzeugung des Clients anhand
der WSDL
$client=new Zend_Soap_Client(
"http://localhost/
service.php?wsdl");
$string=$client->sayHello("Timo");
echo $string;
}
catch(Zend_Exception $e) {
echo $e->getMessage();
}

Der Quelltext ist einfacher als gedacht? Dies liegt an der Implementierung der Zend-Klassen, die alle notwendigen Arbeiten übernehmen. Der Klasse Zend_Soap_Client wird die URL übergeben, unter der die WSDL-Datei erreichbar ist.

In diesem Fall ist dies das PHP-Skript, welches die WSDL-Definition generiert. Die Client-Klasse des Frameworks stellt anschließend alle in der Definition festgelegten Methoden zur Verfügung, die wie im Beispiel zu sehen ist, wie ganz normale PHP-Funktionen aufgerufen werden können.

Natürliche Grenzen

Diese Art des Zugriffes auf einen Webserver eignet sich nur bis zu einer gewissen Grenze. Je mehr Anfragen an einen Server erstellt werden, beispielsweise, weil Sie viele Besucher einer Seite haben, desto ungeeigneter wird diese Methode einen Client zu erzeugen.

Dies liegt schlicht und ergreifend daran, dass der Client jedes Mal anhand der WSDL-Datei erzeugt wird.

Wie bereits erwähnt, verändert sich die Schnittstelle eines Webservices eher selten, sodass es wenig Sinn macht, die Klassen immer neu zu erstellen.

SOAP via PEAR-Klasse

Neben den hier gezeigten SOAP-Klassen des Zend Frameworks gibt es noch weitere empfehlenswerte SOAP-Implementierungen für PHP. Gute Beispiele hierfür sind die PEAR-Klasse Services_Webservice () oder das WSO2 Framework ().

Durch die allgemeine Verbreitung von SOAP gibt es eine Menge an SOAP-Webservices, die frei im Netz verfügbar sind. Darunter Dienste zur Ermittlung von Wetterdaten, Geo-Informationen, Suche in Katalogen, Suche in Bilddatenbanken und vieles andere mehr.

Mehr zum Thema

Youtube Sperre umgehen GEMA
Videos freischalten

So umgehen Sie die GEMA-Sperre bei Youtube. Was Sie dazu brauchen, und wie es am einfachsten geht.
Neue Fritzboxen unterstützen den AC-Standard.
WLAN-Geschwindigkeit verdoppeln

Mehr WLAN-Geschwindigkeit: Mit dem WLAN-Standard 802.11ac und den richtigen Geräten und Einstellungen verdoppeln Sie den Datendurchsatz.
Netflix auf dem TV
Programm in der Übersicht

Welche Filme und Serien gibt es bei Netflix eigentlich zu sehen? Was ist neu im Streaming-Angebot? Diese Antworten helfen weiter.
Netflix
Streaming

Preise, kompatible Geräte, Datenrate, Serien- und Filmangebot von Netflix: Wir beantworten die wichtigsten Fragen rund um den Streaming-Dienst.
E.T. – Der Außerirdische
Vorschau auf Film- und Serien-Highlights

Amazon Prime Instant Video lockt im Dezember 2016 mit Film-Highlights wie "E.T.", "Fast & Furious 7" und der Serie "Ku’damm 56​".