19
SOAP Simple Object Access Protocol by Vinubalaji Gopal (Vinu)

SOAP Simple Object Access Protocol by Vinubalaji Gopal (Vinu)

Embed Size (px)

Citation preview

Page 1: SOAP Simple Object Access Protocol by Vinubalaji Gopal (Vinu)

SOAP

Simple Object Access Protocolby Vinubalaji Gopal (Vinu)

Page 2: SOAP Simple Object Access Protocol by Vinubalaji Gopal (Vinu)

What is SOAP?

W3C Recommendation Simple Object Access Protocol XML based Can use SMTP or HTTP transport Can be used for RPC or Message exchange Works through Firewall Platform Independent

Page 3: SOAP Simple Object Access Protocol by Vinubalaji Gopal (Vinu)

SOAP Participants

Page 4: SOAP Simple Object Access Protocol by Vinubalaji Gopal (Vinu)

SOAP Message

<?xml version='1.0' ?><env:Envelope

xmlns:env="http://www.w3.org/2003/05/soap-envelope">

<env:Header> .... </env:Header> <env:Body> ..... </env:Body></env:Envelope>

Page 5: SOAP Simple Object Access Protocol by Vinubalaji Gopal (Vinu)

SOAP Message

Header isOptional meantfor SOAP Intermediary

Page 6: SOAP Simple Object Access Protocol by Vinubalaji Gopal (Vinu)

SOAP Message Example

SOAP Sender

<?xml version='1.0' ?><env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <env:Body> <flight xmlns:env=”urns”> list </flight> </env:Body></env:Envelope>

SOAP Receiver

Page 7: SOAP Simple Object Access Protocol by Vinubalaji Gopal (Vinu)

SOAP Message Example

SOAP Receiver now

<?xml version='1.0' ?><env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <env:Body> <flightresponse xmlns:env=”urns”> <type>Singapore Airlines</type>

<type>United Airlines</type> </flightresponse> </env:Body></env:Envelope>

SOAP Sender now

Page 8: SOAP Simple Object Access Protocol by Vinubalaji Gopal (Vinu)

What about RPC?

Messaging model is extensible SOAP defines additional elements that

facilitates RPC SOAP is very flexible and lets you define any

method signature. A unique URI needs to be passed which

identifies the SOAP Node that contains or supports the RPC.

Page 9: SOAP Simple Object Access Protocol by Vinubalaji Gopal (Vinu)

SOAP RPC Example Request

<?xml version="1.0"?><env:Envelopexmlns:env="http://www.w3.org/2003/05/soap-

envelope"><env:Body> <m:GetPrice

xmlns:m="http://urwebsite/prices"> <m:Item>Apples</m:Item> </m:GetPrice></env:Body></env:Envelope>

Page 10: SOAP Simple Object Access Protocol by Vinubalaji Gopal (Vinu)

SOAP RPC Example Reply

<?xml version="1.0"?><env:Envelopexmlns:env="http://www.w3.org/2003/05/soap-

envelope"><env:Body> <m:GetPriceResponse

xmlns:m="http://urwebsite/prices"> <m:Price>1.90</m:Price> </m:GetPriceResponse></env:Body></env:Envelope>

Page 11: SOAP Simple Object Access Protocol by Vinubalaji Gopal (Vinu)

SOAP Fault Message

env:Fault – a Subelement of env:Body two mandatory sub-elements - env:Code (which mandates env:Value) - env:Reason – Human Readable Optional env:Detail subelement element Optional env:Node subelement Optional env:Role subelement

Page 12: SOAP Simple Object Access Protocol by Vinubalaji Gopal (Vinu)

SOAP RPC Fault ExampleEnvelope and Body headers.....

<env:Fault> <env:Code>

<env:Value>env:Sender</env:Value> </env:Code><env:Reason> <env:Text xml:lang="en-US">Processing

error</env:Text></env:Reason></env:Fault> End of headers

Page 13: SOAP Simple Object Access Protocol by Vinubalaji Gopal (Vinu)

SOAP HTTP Bindings

Relates the HTTP Response codes with SOAP responses.

Provides a mechanism to specify the URI which identifies the SOAP node which “contains” or “supports” RPC.

Page 14: SOAP Simple Object Access Protocol by Vinubalaji Gopal (Vinu)

HTTP Request Example

GET/travelcompany.example.org/reservations?code=FT35ZBQ HTTP/1.1

Host: travelcompany.example.orgAccept: text/html;q=0.5, application/soap+xml

Page 15: SOAP Simple Object Access Protocol by Vinubalaji Gopal (Vinu)

HTTP Response

HTTP/1.1 200 OKContent-Type: application/soap+xml; charset="utf-8"Content-Length: nnnn

<?xml version='1.0' ?><env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-

envelope"> <env:Body> <flightresponse xmlns:env=”urns”> <type>Singapore Airlines</type> <type>United Airlines</type> </flightresponse> </env:Body></env:Envelope>

Page 16: SOAP Simple Object Access Protocol by Vinubalaji Gopal (Vinu)

HTTP SOAP Fault Example Associated with a HTTP Post

HTTP/1.1 500 Internal Server ErrorContent-Type: application/soap+xml;

charset="utf-8"Content-Length: nnnn<?xml version='1.0' ?><env:Envelope.........<env:Body> <env:Fault>............

Page 17: SOAP Simple Object Access Protocol by Vinubalaji Gopal (Vinu)

Where is it used?

Key component of .Net Architecture Google services through SOAP Amazon store SOAP API Flickr Services SOAP with AJAX (Eg: W3C validator through Soap)

Page 18: SOAP Simple Object Access Protocol by Vinubalaji Gopal (Vinu)

Alternatives

REST – Representative State Transfer JSON RPC XML RPC WDDX – Web Distributed Data eXchange LDO – Lightweight Distributed Objects HTTP EXT (RFC 2744)

Page 19: SOAP Simple Object Access Protocol by Vinubalaji Gopal (Vinu)

Links

SOAP Links: http://www.w3.org/TR/soap/ http://searchwebservices.techtarget.com/searchWebServices/dow

nloads/what_is_soap.swf http://www.soaprpc.com/faq.html http://www.w3schools.com/soap/Soap Implementations: Apache SOAP - http://ws.apache.org/soap/ SOAP:Lite