Tutorials - Entwicklung - Webservices mit PHP und PEAR::SOAP - Einführung -

Entwicklung: Webservices mit PHP und PEAR::SOAP - Einführung -

rob (55)

rob

12.08.2002 00:42

Vinn

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

Postings: 323

Webservices mit PHP und PEAR::SOAP - Einführung -

Dienstag, 06. Januar 2004 22:59

  • 4.0/6 Votes: 1
4.0/6 Votes: 1

Download und Installation
PEAR::SOAP kann entweder mit dem PEAR-Framework installiert werden, wobei zu beachten ist, dass auch noch einige andere Pakete (Mail_Mime, HTTP_Request, Net_URL und Net_Dime) zu installieren sind, diese Dateien werden dann im pear-Verzeichnis von PHP gespeichert und sind über den Incude-Path von PHP verfügbar.
als 2. Möglichkeit kann man hier auch das ganze SOAP-Paket mit den herunterladen.

Falls man jetzt das SOAP-Paket als gepackte Datei heruntergeladen hat, stehen 2 Möglichkeiten zur Verfügung.
Die einfachste wäre die Dateien entpacken und im pear-Verzeichnis von PHP speichern, damit man über den Include-Path darauf zugreifen kann - setzt natürlich vorraus, das man auf das PHP-Verzeichnis zugreifen kann, was bei angemietetem Webspace i.d.R. nicht der Fall ist.
Eine Alternative ist, die Dateien in einem beliebigen Verzeichnis auf dem Webspace speichern und dann den Include-Path im Script explizit zu setzen - setzt vorraus, das die Option set_include_path in der php.ini nicht gesperrt ist.

set_include_path($_SERVER['DOCUMENT_ROOT'] . '/lib/pear/');

Falls man den set_include_path nicht setzen kann, wäre noch eine Möglichkeit (nicht die allerfeinste) alle Include-Pfade in den benötigten PEAR-SOAP-Klassen anzupassen (wären dann so 19 Dateien) und dann auch in einem beliebigen Verzeichnis auf dem Webspace zu speichern. Diese könnte man dann z.B. mit require_once('Datei_Pfad') einbinden.

Der PEAR::SOAP-Server
(ich gehe jetzt mal davon aus, dass das SOAP-Paket im Include-Path liegt)
Als erstes muss die SOAP-Server-Klasse eingebunden werden

require_once('SOAP/Server.php');

jetzt wird die Klasse definiert, welche dann die Methoden für den Webservice enthält.
In der Beispiel-Funktion wird ein einfacher String zurückgegeben.

class CWebservice
{
function sGetHello($sName){
return 'Hallo, '. $sName;
}
}

anschließend wird zuerst ein Objekt der Klasse SOAP_Server instantiiert und ein Objekt unserer Klasse CWebservice.

$oServer = new SOAP_Server();
$oWebservice = new CWebservice();

Nun muss unser Objekt der Klasse CWebservice noch mit addObjectMap() am SOAP-Server registriert werden.

$oServer->addObjectMap($oWebservice, 'urn:webservice');

Zum guten Schluss wird der Server-Dienst gestartet und die Datei mit exit() geschlossen.

$oServer->service($HTTP_RAW_POST_DATA);
exit;

das Beispiel-Skript für einen SOAP-Server:

<?php
require_once('SOAP/Server.php');

class CWebservice
{
function sGetHello($sName){
return 'Hallo, '. $sName;
}
}

$oServer = new SOAP_Server();
$oWebservice = new CWebservice();

$oServer->addObjectMap($oWebservice, 'urn:webservice');

$oServer->service($HTTP_RAW_POST_DATA);
exit;
?>

Der PEAR::SOAP-Client
nachdem die Client-Klasse eingebunden ist, wird ein Client-Objekt instantiiert, als Parameter wird hier der URL zum SOAP-Server übergeben.

require_once ('SOAP/Client.php');
$oClient = new SOAP_CLIENT( 'http://adresse/server.php');

Die erwarteten Parameter der Webservice-Methoden müssen als Array übergeben werden.

$aParameter = array("name" => "Rob");

die gewünschte Webservice-Methode wird nun mit call(aufzurufende Webservice Methode, Parameter, registrierter Name des Services) aufrufen.

$result = $oClient->call('sGetHallo', $aParameter, 'urn:webservice');

das Beispiel-Skript für einen SOAP-Client:

<?php
require_once ('SOAP/Client.php');
$oClient = new SOAP_CLIENT( 'http://adresse/server.php');

$aParameter = array("name" => "Rob");

$result = $oClient->call('sGetHallo', $aParameter, 'urn:webservice');
print_r($result);
?>

Fertig ist der erste Webservice (noch ohne Fehlerbehandlung, WSDL ...).

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

Mathes

Mathes

21.06.2006 12:21

n.a.

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

Postings: 2

Re: Webservices mit PHP und PEAR::SOAP - Einführung -

Mittwoch, 21. Juni 2006 12:30

Hallo, Du scheints Dich ja mit der Thematik gut auszukennen. Ich bin jetzt soweit, daß Client und Server unter PHP5 laufen, d.h. Anfrage und Antwort kommen an. Nächster Schritt ist jetzt die Einbindung der WSDL-Datei. Das klappt auch. Die WDL-Datei schaut folgendermaßen aus: " " Meine Frage, da ich mich mit WSDL / XML gar nicht auskenne und noch keinen Einstieg gefunden habe: Wie bekomme ich meine Daten in diese WSDL-Datei um diese dann zurück an den Clienten u schicken.? Vielen Dank schon mal! Gruß, Matthias

Mathes

Mathes

21.06.2006 12:21

n.a.

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

Postings: 2

Re: Webservices mit PHP und PEAR::SOAP - Einführung -

Mittwoch, 21. Juni 2006 12:38

Shit! Wie bekomme ich denn jetzt meine wsdl-Tags in den Beitrag ohne, daß hier nur Gemüse angezeigt wird?
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?

(118 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.210.581
Besucher heute: 8
Besucher gestern: 52
Max. Besucher/Tag: 900
Gerade online: 5
Max. online: 77
Seiten gesamt: 24.304.809
Aufrufe diese Seite: 1.103

Tag-Cloud

  level     mathes     datei     soap-client     installation     webservices     wsdl-datei     übergeben     fehlerbehandlung     mittwoch     webservice-methode     download     postings     pear-framework     über     methode     dienstag     array     bytefresser     pakete     januar     client     parameter     soap-paket     beispiel-skript     entwicklung     soap_client     einführung     soap-server     tutorials