Upload
brant
View
69
Download
0
Embed Size (px)
DESCRIPTION
A SOAP egy egyszerű XML alapú protokoll, ami lehetővé teszi, hogy az alkalmazások információt cseréljenek a HTTP-én keresztül . Forrás: http://www.w3schools.com/soap/. SOAP alapismeretek. Mi is a SOAP valójában? A SOAP a Simple Object Access Protocol rövidítése. - PowerPoint PPT Presentation
Citation preview
SOAP_1
SOAP alapismeretek
A SOAP egy egyszerű XML alapú protokoll, ami lehetővé teszi, hogy az alkalmazások információt cseréljenek a HTTP-én keresztül.
Forrás: http://www.w3schools.com/soap/
SOAP_2
SOAP alapismeretek
Mi is a SOAP valójában?
– A SOAP a Simple Object Access Protocol rövidítése.
– A SOAP egy kommunikációs protokoll.
– A SOAP az alkalmazások közötti kommunikációra való.
– A SOAP az üzenetek küldésének formátuma.
– A SOAP-ot az Internet segítségével való kommunikációra tervezték.
– A SOAP platform független.
– A SOAP nyelv független.
– A SOAP az XML-en alapul.
– A SOAP egyszerű és bővíthető.
– A SOAP lehetővé teszi a tűzfalakon (firewall) való közlekedést.
– A SOAP-ot W3C szabványként fejlesztik.
SOAP_3
SOAP alapismeretek
A SOAP szintaxisa
A SOAP építőkövei
• A SOAP üzenet egy olyan közönséges XML dokumentum, amely a következő elemeket tartalmazza:
• a kötelező Envelope (boríték) elem, amely az XML dokumentumot SOAP üzenetként azonosítja,
• az opcionális Header (fej) elem, amely a header információkat tartalmazza,
• az előírásos Body (törzs) elem, amely a hívási és válasz információkat tartalmazza,
• az opcionális Fault (hiba) elem, amely az üzenet feldolgozása során előfordult hibákról nyújt információkat.
A fenti elemek mindegyikét a SOAP boríték esetén a http://www.w3.org/2001/12/soap-envelope alapértelmezett (default) névtérben deklarálták, a SOAP kódolás és adattípusok default névtere pedig http://www.w3.org/2001/12/soap-encoding .
SOAP_4
SOAP alapismeretek
Szintaktikai szabályok
• a SOAP üzenetet az XML felhasználásával kell kódolni,
• a SOAP üzenetnek a SOAP Envelope névteret kell használnia,
• a SOAP üzenetnek a SOAP Encoding névteret kell használnia,
• a SOAP üzenetnek tilos DTD hivatkozást tartalmaznia,
• a SOAP üzenetnek tilos XML feldolgozási utasításokat (processing instructions) tartalmaznia.
SOAP_5
SOAP alapismeretek
A SOAP üzenet váza
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Header>
...
...
</soap:Header>
<soap:Body>
...
SOAP_6
SOAP alapismeretek
...
<soap:Fault>
...
...
</soap:Fault>
</soap:Body>
</soap:Envelope>
SOAP_7
SOAP alapismeretek
A kötelező SOAP Envelope elem a SOAP üzenet gyökér eleme. Ez az elem az XML dokumentumot SOAP üzenetként definíálja.
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
...
Message information goes here
...
</soap:Envelope>
SOAP_8
SOAP alapismeretek
A SOAP üzenetnek mindig kell lennie egy a http://www.w3.org/2001/12/soap-envelope névtérrel társított Envelope elemének.
A SOAP encodingStyle attribútumot a dokumentumban használt adattípusok definíálására használjuk. Ez az attribútum bármely SOAP elemen megjelenhet, és ez ennek az elemnek és gyerek elemeinek tartalmára fog vonatkozni. A SOAP elemnek nincs default kódolása.
Szintaxisa
soap:encodingStyle="URI"
SOAP_9
SOAP alapismeretek
Példa:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
...
Message information goes here
...
</soap:Envelope>
SOAP_10
SOAP alapismeretek
Az opcionális Header elem a SOAP üzenet alkalmazás specifikus információit tartalmazza, mint pl. a hitelesítés, fizetési mód, stb.
<?xml version="1.0"?>
<soap:Envelopexmlns:soap="http://www.w3.org/2001/12/soap-envelope"soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Header>
<m:Transxmlns:m="http://www.w3schools.com/transaction/"soap:mustUnderstand="1">234
</m:Trans>
</soap:Header>
...
</soap:Envelope>
SOAP_11
SOAP alapismeretek
A SOAP üzenet a küldőtől a fogadóig az üzenet útvonalán különböző végpontokat érintve haladhat. A SOAP üzenet nem minden részét szánjuk a SOAP üzenet utolsó végpontjának, hanem csak az üzenet útvonal egy vagy több végpontjának. A SOAP actor attribútumát a Header elem egy bizonyos végponthoz való címzéséhez használhatjuk.
Szintaxisa
soap:actor="URI"
SOAP_12
SOAP alapismeretek Példa
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Header>
<m:Trans
xmlns:m="http://www.w3schools.com/transaction/"
soap:actor="http://www.w3schools.com/appml/">234
</m:Trans>
</soap:Header>
...
</soap:Envelope>
SOAP_13
SOAP alapismeretek
A SOAP mustUnderstand attribútumot annak jelzésére használhatjuk, hogy vajon a header bejegyzést a fogadónak fel kell-e dolgoznia vagy sem.
Szintaxisa
soap:mustUnderstand="0|1"
SOAP_14
SOAP alapismeretek
Példa
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Header>
<m:Trans
xmlns:m="http://www.w3schools.com/transaction/"
soap:mustUnderstand="1">234
</m:Trans>
</soap:Header>...
</soap:Envelope>
SOAP_15
SOAP alapismeretek
A kötelező SOAP Body elem tartalmazza a tényleges SOAP üzenetet, melyet az üzenet legutolsó végpontjának szántunk.
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body>
<m:GetPrice xmlns:m="http://www.w3schools.com/prices">
<m:Item>Apples</m:Item>
</m:GetPrice>
</soap:Body>
</soap:Envelope>
SOAP_16
SOAP alapismeretek
Egy lehetséges válasz:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body>
<m:GetPriceResponse xmlns:m="http://www.w3schools.com/prices">
<m:Price>1.90</m:Price>
</m:GetPriceResponse>
</soap:Body>
</soap:Envelope>
SOAP_17
SOAP alapismeretek
Az opcionális SOAP Fault elemet a SOAP üzenet hiba és státusz információinak tárolására használjuk.
A SOAP Fault elemnek a következő alelemei vannak:
• <faultcode> : a hiba azonosítására szolgáló kód,
• <faultstring> : a hiba ember által olvasható magyarázata,
• <faultactor> : információ arról, hogy ki okozta a hibát,
• <detail> : a Body elemhez kapcsolódó alkalmazás specifikus hiba információt tartalmaz.
SOAP Fault kódok: VersionMismatch, MustUnderstand, Client, Server
SOAP_18
SOAP alapismeretek
SOAP HTTP kötés (binding)
HTTP kérés:
POST /item HTTP/1.1
Host: 189.123.345.239
Content-Type: text/plain
Content-Length: 200
HTTP válaszok:
200 OK
Content-Type: text/plain
Content-Length: 200
400 Bad Request
Content-Length: 0
SOAP_19
SOAP alapismeretek
SOAP HTTP kötés (binding)
A SOAP metódus egy HTTP kérés/válasz, amely megfelel a SOAP kódolási szabályainak.
HTTP + XML = SOAP
A SOAP kérés lehet egy HTTP POST vagy egy HTTP GET kérés.
A HTTP POST kérés legalább két HTTP fejet specifikál: Content-Type és Content-Length (tartalom típus és tartalom hosszúság).
A Content-Type fej egy SOAP kérés és válasz esetén meghatározza az üzenet MIME típusát és a kérés vagy válasz XML törzsében használt karakter kódolást.
Szintaxisa:
Content-Type: MIMEType; charset=character-encoding
Példa:
POST /item HTTP/1.1
Content-Type: application/soap+xml;
charset=utf-8
SOAP_20
SOAP alapismeretek
Egy SOAP kérés és válasz Content-Length feje a kérés vagy válasz törzsében lévő bájtok számát adja meg.
Szintaxisa:
Content-Length: bytes
POST /item HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 250
SOAP_21
SOAP alapismeretek
Egy SOAP példa
A következő példában egy GetStockPrice kérést küldünk a szervernek. A kérésnek van egy StockName paramétere, és válaszként egy Price paraméter lesz visszaküldve. A függvény névtere a http://www.stock.org/stock címen van defíniálva.
A SOAP kérés a következő:
POST /InStock HTTP/1.1
Host: www.stock.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn
SOAP_22
SOAP alapismeretek
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body xmlns:m="http://www.stock.org/stock">
<m:GetStockPrice>
<m:StockName>IBM</m:StockName>
</m:GetStockPrice>
</soap:Body>
</soap:Envelope>
SOAP_23
SOAP alapismeretek
A SOAP válasz pedig:
HTTP/1.1 200 OK
Content-Type: application/soap; charset=utf-8
Content-Length: nnn
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
SOAP_24
SOAP alapismeretek
<soap:Body xmlns:m="http://www.stock.org/stock">
<m:GetStockPriceResponse>
<m:Price>34.5</m:Price>
</m:GetStockPriceResponse>
</soap:Body>
</soap:Envelope>
SOAP_25
SOAP alapismeretek
Kiegészítő technológiák:
WS Addressing
SOAP Attachments:
SOAP Message Transmission Optimization Mechanism (MTOM)
XML- binary Optimized Packaging (XOP)