SOAP Simple Object Access Protocol - University of...

18
SOAP Simple Object Access Protocol M.Sc. Nemanja Kojić Copyright (C) 2010 by Nemanja Kojić 1 Elektrotehnički fakultet Univerziteta u Beogradu Katedra za računarsku tehniku i informatiku

Transcript of SOAP Simple Object Access Protocol - University of...

Page 1: SOAP Simple Object Access Protocol - University of Belgraderti.etf.bg.ac.rs/rti/si3iep/vezbe-2014/soap.pdf · 2011. 6. 5. · SOAP primer 18/18 Copyright (C) 2010 by Nemanja Kojić

SOAP

Simple Object Access Protocol

M.Sc. Nemanja Kojić

Copyright (C) 2010 by Nemanja Kojić1

Elektrotehnički fakultet Univerziteta u Beogradu

Katedra za računarsku tehniku i informatiku

Page 2: SOAP Simple Object Access Protocol - University of Belgraderti.etf.bg.ac.rs/rti/si3iep/vezbe-2014/soap.pdf · 2011. 6. 5. · SOAP primer 18/18 Copyright (C) 2010 by Nemanja Kojić

Uvod

Copyright (C) 2010 by Nemanja Kojić2/18

SOAP je akronim za Simple Object Access Protocol

SOAP je protokol za komunikaciju

SOAP omogućava komunikaciju između različitih aplikacija (preko HTTP)

SOAP definiše i propisuje format poruka za komunikaciju

SOAP komunicira preko interneta

SOAP je nezavistan od platforme

SOAP nezavisan od programskog jezika

SOAP je baziran na XMLu

SOAP je jednostavan i lako proširiv

SOAP omogućava prolazak pored firewall-a

SOAP je preporučen od strane konzorcijuma w3c

SOAP omogućava komunikaciju između aplikacija koje se:

izvršavaju na različitim operativnim sistemima

razvijane su različitim tehnologijama

i programskim jezicima

SOAP je ustanovljen kao standard od strane konzorcijuma W3C Recommendation 24. June 2003.

Najjednostavnije rečeno SOAP je protokol za pristup veb servisima.

Page 3: SOAP Simple Object Access Protocol - University of Belgraderti.etf.bg.ac.rs/rti/si3iep/vezbe-2014/soap.pdf · 2011. 6. 5. · SOAP primer 18/18 Copyright (C) 2010 by Nemanja Kojić

SOAP – elementi poruke

Copyright (C) 2010 by Nemanja Kojić3/18

SOAP poruka je običan XML dokument

sadrži sledeće elemente: Envelope element

identifikuje XML dokument kao SOAP poruku

Header element sadrži informacije o zaglavljima

Body element nosi parametre zahteva i rezultate odgovora

Fault element sadrži greške i informacije o statusu

Page 4: SOAP Simple Object Access Protocol - University of Belgraderti.etf.bg.ac.rs/rti/si3iep/vezbe-2014/soap.pdf · 2011. 6. 5. · SOAP primer 18/18 Copyright (C) 2010 by Nemanja Kojić

SOAP – elementi poruke

Copyright (C) 2010 by Nemanja Kojić4/18

Page 5: SOAP Simple Object Access Protocol - University of Belgraderti.etf.bg.ac.rs/rti/si3iep/vezbe-2014/soap.pdf · 2011. 6. 5. · SOAP primer 18/18 Copyright (C) 2010 by Nemanja Kojić

SOAP – elementi poruke

Copyright (C) 2010 by Nemanja Kojić5/18

Svi elementi su deklarisani u podrazumevanom prostoru imena (namespace) za SOAP envelope:http://www.w3.org/2001/12/soap-envelope

podrazumevani prostor imena za SOAP enkodovanje i tipove podataka:http://www.w3.org/2001/12/soap-encoding

Page 6: SOAP Simple Object Access Protocol - University of Belgraderti.etf.bg.ac.rs/rti/si3iep/vezbe-2014/soap.pdf · 2011. 6. 5. · SOAP primer 18/18 Copyright (C) 2010 by Nemanja Kojić

Sintaksna pravila

Copyright (C) 2010 by Nemanja Kojić6/18

SOAP poruka MORA biti enkodovana korišćenjem XMLa

SOAP poruka MORA koristiti: SOAP Envelope prostor imena

SOAP Encoding prostor imena

SOAP poruka NE SME da sadrži: DTD referencu

direktive za procesiranje XML-a

Page 7: SOAP Simple Object Access Protocol - University of Belgraderti.etf.bg.ac.rs/rti/si3iep/vezbe-2014/soap.pdf · 2011. 6. 5. · SOAP primer 18/18 Copyright (C) 2010 by Nemanja Kojić

Struktura SOAP poruke

Copyright (C) 2010 by Nemanja Kojić7/18

<?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>...</soap:Header>

<soap:Body>...<soap:Fault>...</soap:Fault>

</soap:Body>

</soap:Envelope>

Page 8: SOAP Simple Object Access Protocol - University of Belgraderti.etf.bg.ac.rs/rti/si3iep/vezbe-2014/soap.pdf · 2011. 6. 5. · SOAP primer 18/18 Copyright (C) 2010 by Nemanja Kojić

SOAP Envelope element

Copyright (C) 2010 by Nemanja Kojić8/18

<?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>

xmlns:soap namespace treba uvek da ima vrednost: "http://www.w3.org/2001/12/soap-envelope".------------------------------------------------------------Definiše Envelope element kao SOAP EnvelopeAko se koristi neki drugi imenski

prostor, aplikacija: generiše grešku

i odbacuje poruku

encodingStyle atributkoristi se za definisanje tipova podataka u dokumentu. Može da se specificira za bilo koji element.Primenjuje se na sadržaj elementa i rekurzivno na njegovu decu.

SOAP poruka nema podrazumevano enkodovanje.Sintaksa: soap:encodingStyle="URI"

koreni element SOAP porukedefiniše XML dokument kao SOAP poruku

Page 9: SOAP Simple Object Access Protocol - University of Belgraderti.etf.bg.ac.rs/rti/si3iep/vezbe-2014/soap.pdf · 2011. 6. 5. · SOAP primer 18/18 Copyright (C) 2010 by Nemanja Kojić

SOAP Header element (1)

Copyright (C) 2010 by Nemanja Kojić9/18

sadrži informacije o zaglavljima i njihovim vrednostima

opcioni element poruke

sadrži aplikativno-specifične informacije o SOAP poruci (autentikacije, plaćanje ..)

ako je prisutan Header element, mora biti prvo dete Envelope elementa

Page 10: SOAP Simple Object Access Protocol - University of Belgraderti.etf.bg.ac.rs/rti/si3iep/vezbe-2014/soap.pdf · 2011. 6. 5. · SOAP primer 18/18 Copyright (C) 2010 by Nemanja Kojić

SOAP Header - primer

Copyright (C) 2010 by Nemanja Kojić10/18

<?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>

Sva neposredna deca elementa Header moraju imati specificiran prostor imena.

Page 11: SOAP Simple Object Access Protocol - University of Belgraderti.etf.bg.ac.rs/rti/si3iep/vezbe-2014/soap.pdf · 2011. 6. 5. · SOAP primer 18/18 Copyright (C) 2010 by Nemanja Kojić

SOAP Header i atributi

Copyright (C) 2010 by Nemanja Kojić11/18

SOAP definiše 3 atributa u podrazumevanom imenskom prostoru("http://www.w3.org/2001/12/soap-envelope"). mustUnderstand,

actor,

encodingStyle.

Atributi definisani unutar SOAP Header elementa definišu kako primalac treba da procesira SOAP poruku

Page 12: SOAP Simple Object Access Protocol - University of Belgraderti.etf.bg.ac.rs/rti/si3iep/vezbe-2014/soap.pdf · 2011. 6. 5. · SOAP primer 18/18 Copyright (C) 2010 by Nemanja Kojić

Atribut mustUnderstand

Copyright (C) 2010 by Nemanja Kojić12/18

ovim atributom se specificira da li je odgovarajuće polje zaglavlja obavezno ili ne

ako se specificira mustUnderstand="1" za element koji je dete elementa Header, primalac poruke mora da prepozna dati element

u suprotnom, parsiranje se prekida kao neuspešno

Sintaksa soap:mustUnderstand="0|1“

Page 13: SOAP Simple Object Access Protocol - University of Belgraderti.etf.bg.ac.rs/rti/si3iep/vezbe-2014/soap.pdf · 2011. 6. 5. · SOAP primer 18/18 Copyright (C) 2010 by Nemanja Kojić

Atribut actor

Copyright (C) 2010 by Nemanja Kojić13/18

SOAP poruka može putovati kroz različite čvorove duž puta od pošiljaoca do primaoca

ne moraju svi delovi poruke biti namenjeni krajnjem čvoru/primaocu, već i drugim čvorovima duž datog puta

koristi se za adresiranje odgovarajućeg elementa zaglavlja za specifične primaoce.

Syntaksa soap:actor="URI“

<?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>

Page 14: SOAP Simple Object Access Protocol - University of Belgraderti.etf.bg.ac.rs/rti/si3iep/vezbe-2014/soap.pdf · 2011. 6. 5. · SOAP primer 18/18 Copyright (C) 2010 by Nemanja Kojić

SOAP Body Element

Copyright (C) 2010 by Nemanja Kojić14/18

Sadrži konkretnu poruku

Obavezni element poruke

Elementi koji su neposredna deca mogu imati specificiran prostor imena.

Page 15: SOAP Simple Object Access Protocol - University of Belgraderti.etf.bg.ac.rs/rti/si3iep/vezbe-2014/soap.pdf · 2011. 6. 5. · SOAP primer 18/18 Copyright (C) 2010 by Nemanja Kojić

SOAP Body - primer

Copyright (C) 2010 by Nemanja Kojić15/18

zahteva se cena jabuka

<?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>

<?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>

Elementi m:GetPrice

i m:Item su

specifični za datu

aplikaciju. Oni ne

pripadaju SOAP

prostoru imena.

Odgovor

Zahtev

Page 16: SOAP Simple Object Access Protocol - University of Belgraderti.etf.bg.ac.rs/rti/si3iep/vezbe-2014/soap.pdf · 2011. 6. 5. · SOAP primer 18/18 Copyright (C) 2010 by Nemanja Kojić

SOAP Fault Element

Copyright (C) 2010 by Nemanja Kojić16/18

nosi statusne informacije ili informacije o greškama za datu SOAP poruku.

opcioni element

ako postoji, mora biti dete elementa Body

može se pojaviti samo jednom u SOAP poruci

Page 17: SOAP Simple Object Access Protocol - University of Belgraderti.etf.bg.ac.rs/rti/si3iep/vezbe-2014/soap.pdf · 2011. 6. 5. · SOAP primer 18/18 Copyright (C) 2010 by Nemanja Kojić

SOAP & HTTP

(SOAP HTTP Binding)

Copyright (C) 2010 by Nemanja Kojić17/18

SOAP metoda je HTTP zahtev/odgovor koji je kreiran u skladu sa SOAP pravilima enkodovanja.

HTTP + XML = SOAP

SOAP zahtev može biti HTTP POST ili HTTP GET

HTTP POST zahtev specificira najmanje dva HTTP zaglavlja: Content-Type i Content-Length.

Content-TypeMIME tip poruke i enkodovanje karaktera unutar XML dokumenta

POST /item HTTP/1.1

Content-Type: application/soap+xml; charset=utf-8

Content-Length: 250

Page 18: SOAP Simple Object Access Protocol - University of Belgraderti.etf.bg.ac.rs/rti/si3iep/vezbe-2014/soap.pdf · 2011. 6. 5. · SOAP primer 18/18 Copyright (C) 2010 by Nemanja Kojić

SOAP primer

Copyright (C) 2010 by Nemanja Kojić18/18

POST /InStock HTTP/1.1

Host: www.example.org

Content-Type: application/soap+xml; 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:Body xmlns:m="http://www.example.org/stock">

<m:GetStockPrice>

<m:StockName>IBM</m:StockName>

</m:GetStockPrice>

</soap:Body>

</soap:Envelope>

HTTP/1.1 200 OK

Content-Type: application/soap+xml; 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:Body xmlns:m="http://www.example.org/stock">

<m:GetStockPriceResponse>

<m:Price>34.5</m:Price>

</m:GetStockPriceResponse>

</soap:Body>

</soap:Envelope>