SOAP
E N D
Presentation Transcript
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 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 is Optional meant for SOAP Intermediary
SOAP Message Example <?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 Sender SOAP Receiver
SOAP Message Example <?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 SOAP Receiver 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:Envelope xmlns: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:Envelope xmlns: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 Example Envelope 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.org Accept: text/html;q=0.5, application/soap+xml
HTTP Response HTTP/1.1 200 OK Content-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 Error Content-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/downloads/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