Webservices mit PHP und NuSOAP - Einführung -
Montag, 05. Januar 2004 16:56
Was ist ein Webservice?
ich hab mal gelesen, wenn man 5 IT-Experten diese Frage stellt - bekommt man 6 verschiedene korrekte Definitionen, also, hier eine einfache Definition: ein Webservice ist eine Software, die selbst über das Internet verfügbar ist und mit XML auf der Basis von Internet-Netzwerkprotokollen erbracht wird.
Download und Installation
(Ich gehe davon aus, dass PHP installiert ist), dann benötigt man noch die Datei nusoap.php, welche man unter folgendem Link: http://dietrich.ganx4.com/nusoap herunterladen kann.
Das heruntergeladen Archiv enthält neben einer Informationsdatei und der Lizenz (LGPL) die Datei nusoap.php.
Falls alle Skripte, die NuSOAP verwenden im gleichen Verzeichnis liegen, kann die Datei nusoap.php auch dort abgelegt werden.
Anderenfalls wird die Datei nusoap.php in einem zentralen Verzeichnis abgelegt und dann mit require_once,include oder absoluten/relativen Pfad eingebunden.
Web-Service (SOAP-Server) erstellen
im folgenden Beispiel wird ein gezeigt wie ein einfacher Webservice erstellt wird.
zuerst wird die Datei nusoap.php aus dem Verzeichnis lib eingebunden:
require_once ("lib/nusoap.php");
dann wird ein Objekt vom Typ soap_server benötigt:
$oMySoapServer = new soap_server();
mit der Methode register() können dann PHP-Funktionen beim SOAP-Server registriert werden, diese Methoden können dann per Webservice aufgerufen werden:
$oMySoapServer->register('sGetHallo');
im vorletzten Teil wird noch dafür gesorgt werden, dass die Daten, die per POST geschickt werden, durch den SOAP-Server abgearbeitet werden:
$oMySoapServer->service($HTTP_RAW_POST_DATA);
exit();
jetzt noch eine einfache Funktion für unseren Webservice:
function sGetHallo(){
return "Hallo, Herzlich Willkommen beim neuen Web-Service.";
}oder
function sGetTime(){
return "Die aktuelle Zeit ist ". date("H:i");
}
das ganze Skript für einen einfachen Webservice sieht dann so aus.
<?php
require_once ("lib/nusoap.php");
$oMySoapServer = new soap_server();
$oMySoapServer->register('sGetHallo');
$oMySoapServer->register('sGetTime');
function sGetHello(){
return "Hallo, Herzlich Willkommen beim neuen Web-Service.";
}
function sGetTime(){
return "Die aktuelle Zeit: ". date("H:i");
}
$oMySoapServer->service($HTTP_RAW_POST_DATA);
exit();
?>
jetzt noch das Skript als soap_server.php speichern und man hat einen Webservice, jedoch noch ohne Parameterübergabe,Fehlerbehandlung...
Was man jetzt zum Aufruf des Webservices benötigt ist ein SOAP Client.
Web-Service (SOAP-Client) erstellen
natürlich wird auch hier wieder die Datei nusoap.php benötigt:
require_once("lib/nusoap.php");
jetzt muss erst einmal ein Objekt vom Typ soap_client erzeugt werden und als ersten Parameter der URL des SOAP-Servers übergeben werden:
$oSoapClient = new soapclient('http://meineadresse/soap_server.php');
mit der Methode call() kann dann eine beliebige Funktion des Webservices aufgerufen werden,
wobei das Ergebnis der Rückgabewert der Webservice-Funktion ist.
$oSoapClient->call('sGetHello');
$oSoapClient->call('sGetTime');
und das ganze Skript für einen Webserviceclient sieht dann so aus:
<?php
require_once("lib/nusoap.php");
$oSoapClient = new soapclient('http://meineadresse/soap_server.php');
echo $oSoapClient->call('sGetHello');
echo "<br>";
echo $oSoapClient->call('sGetTime');
?>
als Ergebnis sollte dann kommen:
Hallo, Herzlich Willkommen beim neuen Web-Service.
Die aktuelle Zeit: 15:13
(die aktuelle Zeit kann sich natürlich auch ändern )
weitere Beiträge zum Thema PHP/NuSOAP:
Fehlerbehandlung und Parameterübergabe
WSDL-Support