SOAP (protocol): Difference between revisions

From Citizendium
Jump to navigation Jump to search
imported>Pat Palmer
No edit summary
imported>Pat Palmer
(revising the introduction to be more precise)
Line 1: Line 1:
{{subpages}}
{{subpages}}


'''SOAP''' is a client-server [[protocol (computing)|protocol]] for [[Remote Procedure Call|RPC]] messaging between a [[Web Service]] and its clients in [[computer network]]s.  The SOAP request and response format is [[XML|Extensible Markup Language]] (XML), and the messages are transmitted using [[HyperText Transfer Protocol|HTTP]]).  The SOAP specification grew out of an industry consortium and relies on compilers to automatically generate SOAP messages based on a web service contract (WSDL) file.
'''SOAP''' is a [[client-server]] [[protocol (computing)|protocol]] for [[Remote Procedure Call|RPC]] messaging between a [[web service]] and its clients on the [[World wide web|web]].  The protocol's request and response format is [[XML|Extensible Markup Language]] (XML), and the messages are typically carried on top of [[HyperText Transfer Protocol|HTTP]]).  The SOAP specification grew out of an industry consortium soon after 2000; it relies on compilers to automatically read a web service contract (WSDL file) at compile time, and generate a [[proxy]] object.  The local computer program communicates with the proxy object as if it were a local object, and the proxy object automatically handles all the RPC-style SOAP messaging between server and client.


SOAP also refers to a dialect (encoding) of XML; SOAP-encoded XML is designed to be more concise that pure XML by providing pointer attributes for any duplicated data values.  However, SOAP-encoded XML was not popular for use in SOAP protocol messaging, and after early experiments, pure XML became widely preferred as the SOAP protocol message format.
SOAP also refers to a dialect (encoding) of XML; SOAP-encoded XML is designed to be more concise that pure XML by providing pointer attributes for any duplicated data values.  However, SOAP-encoded XML was not popular for use in SOAP protocol messaging, and after early experiments, pure XML became widely preferred as the SOAP protocol message format.

Revision as of 04:43, 26 December 2011

This article is developing and not approved.
Main Article
Discussion
Related Articles  [?]
Bibliography  [?]
External Links  [?]
Citable Version  [?]
 
This editable Main Article is under development and subject to a disclaimer.

SOAP is a client-server protocol for RPC messaging between a web service and its clients on the web. The protocol's request and response format is Extensible Markup Language (XML), and the messages are typically carried on top of HTTP). The SOAP specification grew out of an industry consortium soon after 2000; it relies on compilers to automatically read a web service contract (WSDL file) at compile time, and generate a proxy object. The local computer program communicates with the proxy object as if it were a local object, and the proxy object automatically handles all the RPC-style SOAP messaging between server and client.

SOAP also refers to a dialect (encoding) of XML; SOAP-encoded XML is designed to be more concise that pure XML by providing pointer attributes for any duplicated data values. However, SOAP-encoded XML was not popular for use in SOAP protocol messaging, and after early experiments, pure XML became widely preferred as the SOAP protocol message format.

The name SOAP was originally defined as Simple Object Access Protocol, but this acronym fell out of favor because it is confusing to people.

As a layman's example of how SOAP procedures can be used, a SOAP message could be sent to a web service enabled web site (for example, a house price database) with the parameters needed for a search. The site would then return an XML-formatted document with the resulting data (prices, location, features, etc). Because the data is returned in a standardized machine-parsable format, it could then be integrated directly into a third-party site.

Sample SOAP message

Request

<soapenv:Envelope
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://schemas.xmlsoap.org/soap/envelope/
                        http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Body>
    <req:echo xmlns:req="http://localhost:8080/axis2/services/MyService/">
      <req:category>classifieds</req:category>
    </req:echo>
  </soapenv:Body>
</soapenv:Envelope>

Response

<soapenv:Envelope
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://schemas.xmlsoap.org/soap/envelope/
                        http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Header>
    <wsa:ReplyTo>
      <wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
    </wsa:ReplyTo>
    <wsa:From>
      <wsa:Address>http://localhost:8080/axis2/services/MyService</wsa:Address>
    </wsa:From>
    <wsa:MessageID>ECE5B3F187F29D28BC11433905662036</wsa:MessageID>
  </soapenv:Header>
  <soapenv:Body>
    <req:echo xmlns:req="http://localhost:8080/axis2/services/MyService/">
      <req:category>classifieds</req:category>
    </req:echo>
  </soapenv:Body>
</soapenv:Envelope>