Tutorials - Entwicklung - Webservices mit PHP und NuSOAP - Einführung -

Entwicklung: Webservices mit PHP und NuSOAP - Einführung -

rob (54)

rob

12.08.2002 00:42

Vinn

  • 323 Postings, noch 27 bis zum nächsten Level (350)

Postings: 323

Webservices mit PHP und NuSOAP - Einführung -

Montag, 05. Januar 2004 16:56

  • 6.0/6 Votes: 2
6.0/6 Votes: 2

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

Zuletzt editiert:Dienstag, 06. Januar 2004 23:20

Olli

Olli

22.02.2005 08:58

Düsseldorf

  • 2 Postings, noch 48 bis zum nächsten Level (50)

Postings: 2

Re: Webservices mit PHP und NuSOAP - Einführung -

Dienstag, 22. Februar 2005 09:34

Hi,

Habe das Beispiel kopiert und auf einem IIS als Server versucht, klappt aber nicht.
Problem ist die Variable $HTTP_RAW_POST_DATA die nicht erkannt wird,
obwohl ich always_populate_raw_post_data auf on gesetzt habe.
Kann mir da jemand helfen?

Gruß Olli

rob (54)

rob

12.08.2002 00:42

Vinn

  • 323 Postings, noch 27 bis zum nächsten Level (350)

Postings: 323

Re: Webservices mit PHP und NuSOAP - Einführung -

Dienstag, 22. Februar 2005 13:30

Hi, ich kann das jetzt auch nicht genau sagen, habe aber mal gelesen, dass dieses Problem bei manchen PHP-Versionen z.B. PHP4.2.2 auftritt. Ich habe hier mit PHP 4.1.0 und 4.3.3 keine Probleme - habe aber auch keinen IIS.

Vielleicht mal eine aktuelle 4er PHP-Version installieren und register_globals=on setzen?

Olli

Olli

22.02.2005 08:58

Düsseldorf

  • 2 Postings, noch 48 bis zum nächsten Level (50)

Postings: 2

Re: Webservices mit PHP und NuSOAP - Einführung -

Dienstag, 22. Februar 2005 16:52

Hi,

das habe ich alles schon probiert. Denke das ist mehr ein generelles Verständnisproblem
bei mir, oder ein Installationsproblem. Schön wäre, wenn wir direkt per email kommunizieren könnten:
Oliver.Gritsch@SinnLeffers.de

Danke, Gruß

Olli

Bookmark setzen!:Zu Google Bookmark hinzufügen.Zu bloglines hinzufügen.Zu Newsgator hinzufügen.Zu FURL hinzufügen.Zu DIGG hinzufügen.Zu Webnews hinzufügen.Zu Netscape hinzufügen.Zu Yahoo MyWeb hinzufügen.Zu spurl.net hinzufügen.Zu diigo hinzufügen.Zu Newsvine hinzufügen.Zu del.icio.us hinzufügen.Zu SIMPIFY hinzufügen.Zu Mister Wong hinzufügen.Zu Linkarena hinzufügen.Zu isio.de hinzufügen.Zu Oneview hinzufügen.Zu yigg.de hinzufügen.Zu reddit hinzufügen.Zu StumbleUpon hinzufügen.Zu Slashdot hinzufügen.Zu Blinklist hinzufügen.Zu Technorati hinzufügen.Zu Blogmarks hinzufügen.Zu Blinkbits hinzufügen.Zu ma.gnolia hinzufügen.Zu smarking.com hinzufügen.Zu Netvouz hinzufügen.Zu co.mments hinzufügen.Zu Connotea hinzufügen.Zu de.lirio.us hinzufügen.

Specials

Bytefresser Specials: Anno 1404

Umfrage

Welches ist Dein Lieblings-Anno?

(109 Stimmen)

1. Ganz klar: Anno 1800!
2. Anno 2205
3. Anno 2070
4. Anno 1404
5. Anno 1701
6. Anno 1503
7. Anno 1602
8. Anno Online

Benutzer-Counter

Besucher gesamt: 1.207.980
Besucher heute: 25
Besucher gestern: 64
Max. Besucher/Tag: 900
Gerade online: 6
Max. online: 77
Seiten gesamt: 24.122.970
Aufrufe diese Seite: 2.478

Tag-Cloud

  januar     herzlich     tutorials     programmierung     februar     dienstag     düsseldorf     problem     webservices     ergebnis     einführung     parameterübergabe     fehlerbehandlung     postings     level     parameter     webdesign     bytefresser     entwicklung     methode     wsdl-support     funktion     webserviceclient     zuletzt     rückgabewert     thema     nusoap     signatur     willkommen     skript