soap
DESCRIPTION
Simple Object Access Protocol by Vinubalaji Gopal (Vinu). SOAP. 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. SOAP Participants. SOAP Message. - PowerPoint PPT PresentationTRANSCRIPT
SOAP
Simple Object Access Protocolby 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
SOAP Participants
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>
SOAP Message
Header isOptional meantfor SOAP Intermediary
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
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
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.
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>
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>
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
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
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.
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
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>
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>............
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)
Alternatives
REST – Representative State Transfer JSON RPC XML RPC WDDX – Web Distributed Data eXchange LDO – Lightweight Distributed Objects HTTP EXT (RFC 2744)
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