Für die Nutzung eines Webdienstes bietet PHP die Klasse
SOAPClient an. Ein Objekt dieser Klasse dient hierbei als
Stellvertreter (siehe „Stellvertreter“)
für den Webdienst: Methodenaufrufe werden automatisch in eine SOAP-Nachricht
übersetzt und an den entsprechenden Webdienst weitergeleitet. Die
SOAP-Antwort wird verarbeitet und als Ergebnis des Methodenaufrufes
zurückgegeben. Intern benutzt die Klasse SOAPClient
hierfür eine __call()-Methode (siehe
Kapitel 2).
Liegt für den zu verwendenden Webdienst eine WSDL-Beschreibung vor,
so ist dem Konstruktor der Klasse SOAPClient lediglich
Pfad oder URL zu übergeben, wo das WSDL-Dokument zu finden ist.
Beispiel 9.5
zeigt den Zugriff auf den Hallo-Welt-Webdienst über dessen
WSDL-Beschreibung.
Beispiel 9.5: Über die WSDL-Beschreibung auf den Hallo-Welt-Webdienst zugreifen
<?php
try {
$client = new SOAPClient('http://localhost/HalloWelt.php?wsdl');
print $client->halloWelt();
}
catch (SOAPFault $f) {
print $f->faultstring;
}
?>Hallo Welt
Die Erzeugung eines SOAPClient-Objektes für die Verwendung
eines Webdienstes, für den keine WSDL-Beschreibung vorliegt, gestaltet
sich etwas aufwändiger. Die sonst aus der WSDL-Beschreibung gewonnenen
Informationen müssen dann dem Konstruktor in einem assoziativen Array
übergeben werden.
Beispiel 9.6: Ohne WSDL-Beschreibung auf den Hallo-Welt-Webdienst zugreifen
<?php
try {
$client = new SOAPClient(
NULL,
array(
'location' => 'http://localhost/HalloWelt.php',
'uri' => 'http://localhost/HalloWelt',
'style' => SOAP_RPC,
'use' => SOAP_ENCODED
)
);
print $client->halloWelt();
}
catch (SOAPFault $f) {
print $f->faultstring;
}
?>Hallo Welt
Über die Methode __getFunctions() der Klasse
SOAPClient können Informationen über die Funktionen des
Webdienstes abgefragt werden. Hierzu gehören Name der Funktion,
Name und Typ der Parameter sowie der Typ des Rückgabewertes.
Beispiel 9.7
zeigt die Ausgabe von __getFunctions() für ein
SOAPClient-Objekt, das den Google-Webdienst repräsentiert.
Die Methode __getFunctions() gewinnt ihre Informationen
aus der WSDL-Beschreibung des Webdienstes.
Beispiel 9.7: Die Methode SOAPClient::__getFunctions()
<?php
$client = new SOAPClient('GoogleSearch.wsdl');
print_r($client->__getFunctions());
?>Array
(
[0] => base64Binary doGetCachedPage(string $key, string $url)
[1] => string doSpellingSuggestion(string $key, string $phrase)
[2] => GoogleSearchResult doGoogleSearch(string $key, string $q,
int $start, int $maxResults, boolean $filter, string $restrict,
boolean $safeSearch, string $lr, string $ie, string $oe)
)
Beispiel 9.8
demonstriert den Zugriff auf den Google-Webdienst über ein Objekt
der Klasse SOAPClient. Damit das Beispiel korrekt
funktioniert, muss der erste Parameter der Methode
doGoogleSearch() durch einen gültigen Lizenzschlüssel
für den Google-Webdienst ersetzt werden.
Beispiel 9.8: Auf den Webdienst von Google zugreifen
<?php
$client = new SOAPClient('GoogleSearch.wsdl');
try {
$result = $client->doGoogleSearch(
'00000000000000000000000000000000',
'Professionelle Softwareentwicklung mit PHP 5',
0,
1,
FALSE,
'',
FALSE,
'',
'',
''
);
foreach ($result->resultElements as $resultElement) {
print $resultElement->URL;
}
}
catch (SOAPFault $f) {
print $f->faultstring;
}
?>http://www.professionelle-softwareentwicklung-mit-php5.de/