A SOAP (Simple Object Access Protocol) egy XML-alapú protokoll, amelyet webszolgáltatások hálózaton keresztüli kommunikációjához terveztek. A SOAP lehetővé teszi különböző programozási nyelveken írt és különböző platformokon futó alkalmazások közötti adatcserét és kommunikációt.
- XML-alapú: A SOAP üzenetek XML formátumúak, ami biztosítja a platformfüggetlenséget.
- HTTP protokoll: Általában HTTP-n keresztül működik, ami lehetővé teszi a webes alkalmazásokkal való könnyű integrációt.
- Szabványosított: A W3C konzorcium tartja karban és ajánlja használatát.
- Platformfüggetlen: Különböző operációs rendszereken és programozási nyelveken használható.
Egy SOAP üzenet a következő fő elemekből áll:
- Envelope: Az üzenet gyökéreleme, amely az egész SOAP üzenetet tartalmazza.
- Header: Opcionális elem, amely további információkat tartalmazhat, például hitelesítési adatokat.
- Body: Az üzenet fő tartalma, amely a tényleges adatokat hordozza.
- Fault: Opcionális elem, amely hibaüzeneteket tartalmazhat.
A SOAP a kérés-válasz modellt követi:
- A kliens alkalmazás SOAP üzenetet küld a szervernek.
- A szerver feldolgozza az üzenetet.
- A szerver SOAP üzenetben válaszol a kliensnek.
A SOAP segítségével különböző rendszerek közötti kommunikáció egyszerűbbé és szabványosabbá válik, lehetővé téve a hatékony adatcserét heterogén környezetekben is.
Az alábbi példában egy SOAP hívás történik PHP-ban:
<?php
// SOAP kliens létrehozása
$wsdl = 'https://example.com/szolgaltatas.wsdl';
$kliens = new SoapClient($wsdl, array('trace' => 1));
try {
// SOAP metódus hívása
$eredmeny = $kliens->metodusNev(array(
'parameter1' => 'ertek1',
'parameter2' => 'ertek2'
));
// Eredmény kiíratása
print_r($eredmeny);
// Kérés és válasz megjelenítése (opcionális)
echo "SOAP Kérés:\n" . $kliens->__getLastRequest() . "\n";
echo "SOAP Válasz:\n" . $kliens->__getLastResponse() . "\n";
} catch (SoapFault $e) {
// Hiba kezelése
echo "SOAP Hiba: " . $e->getMessage();
}
Ebben a példában:
- Létrehozunk egy SOAP klienst a
SoapClient
osztály segítségével. A$wsdl
változóban megadjuk a webszolgáltatás WSDL (Web Services Description Language) fájljának URL-jét. - A
try-catch
blokkon belül meghívjuk a webszolgáltatás egy metódusát (metodusNev
) és átadjuk a szükséges paramétereket. - Az eredményt kiíratjuk a
print_r()
függvénnyel. - Opcionálisan megjelenítjük a teljes SOAP kérést és választ a
__getLastRequest()
és__getLastResponse()
metódusokkal. - Hiba esetén a
catch
blokkban kezeljük aSoapFault
kivételt és kiírjuk a hibaüzenetet.
Néhány fontos megjegyzés:
- A
'trace' => 1
beállítás lehetővé teszi a kérés és válasz nyomkövetését. - A
metodusNev
és a paraméterek nevei (parameter1
,parameter2
) a konkrét webszolgáltatástól függően változhatnak. - Éles környezetben mindig használjunk hibakezelést és naplózást.
- Biztonságos kapcsolathoz (HTTPS) további beállításokra lehet szükség.
Ez a példa egy alapvető SOAP hívást mutat be PHP-ban, de a tényleges implementáció a használt webszolgáltatás specifikációjától függ.