WebService SOAP

SOAP ist ein Protokoll zum Austausch XML-Information-Set-basierter Nachrichten über ein Rechnernetz und hat den Status einer World Wide Web Consortium-Empfehlung (W3C-Empfehlung). Es stellt Regeln für das Nachrichtendesign auf. Es regelt, wie Daten in der Nachricht abzubilden und zu interpretieren werden, und gibt eine Konvention für entfernte Prozeduraufrufe mittels SOAP-Nachrichten vor. SOAP macht keine Vorschriften zur Semantik applikationsspezifischer Daten, die versendet werden sollen, sondern stellt ein Rahmenwerk (framework) zur Verfügung, welches erlaubt, dass beliebige applikationsspezifische Informationen übertragen werden können. Zum Senden von Nachrichten können beliebige Transportprotokolle verwendet werden. In der Praxis wird aufgrund der Kompatibilität mit gängigen Netzwerk-Architekturen (wie Firewalls) meist auf HTTP / HTTPS zurückgegriffen.

Beispiel:

<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions name="ITEKDocumentMessageService" targetNamespace="http://service.itek.de/document-exchange" 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
xmlns:types="http://service.itek.de/document-exchange/types2" xmlns:faults="http://service.itek.de/document-exchange/faults" 
xmlns:service="http://service.itek.de/document-exchange" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <wsdl:types>
        <xs:schema>
            <xs:import schemaLocation="Schemas/Types.xsd" 
					   namespace="http://service.itek.de/document-exchange/types2" />
        </xs:schema>
        <xs:schema>
            <xs:import schemaLocation="Schemas/Faults.xsd" 
                       namespace="http://service.itek.de/document-exchange/faults" />
        </xs:schema>
    </wsdl:types>
    <wsdl:message name="getNextDocument">
        <wsdl:part name="getNextDocument" 
                   element="types:getNextDocument" />
    </wsdl:message>
    <wsdl:message name="getNextDocumentResponse">
        <wsdl:part name="getNextDocumentResponse" 
                   element="types:getNextDocumentResponse" />
    </wsdl:message>
    <wsdl:message name="UnauthorizedFault">
        <wsdl:part name="Fault" 
                   element="faults:UnauthorizedFault" />
    </wsdl:message>
    <wsdl:message name="UncategorizedFault">
        <wsdl:part name="Fault1"
                   element="faults:UncategorizedFault" />
    </wsdl:message>
    <wsdl:message name="FormatParameterFault">
        <wsdl:part name="Fault2"
                   element="faults:FormatParameterFault" />
    </wsdl:message>
    <wsdl:message name="FormatVersionParameterFault">
        <wsdl:part name="Fault3"
                   element="faults:FormatVersionParameterFault" />
    </wsdl:message>
    <wsdl:message name="DocumentTypeParameterFault">
        <wsdl:part name="Fault4"
                   element="faults:DocumentTypeParameterFault" />
    </wsdl:message>
    <wsdl:message name="sendDocumentAcknowledgement">
        <wsdl:part name="sendDocumentAcknowledgement" 
                   element="types:sendDocumentAcknowledgement" />
    </wsdl:message>
    <wsdl:message name="sendDocumentAcknowledgementResponse">
        <wsdl:part name="sendDocumentAcknowledgementResponse" 
                   element="types:sendDocumentAcknowledgementResponse" />
    </wsdl:message>
    <wsdl:portType name="ITEKDocumentMessageServiceType">
        <wsdl:operation name="getNextDocument">
            <wsdl:input message="service:getNextDocument" />
            <wsdl:output message="service:getNextDocumentResponse" />
            <wsdl:fault name="UnauthorizedFault" 
                        message="service:UnauthorizedFault" />
            <wsdl:fault name="UncategorizedFault"
                        message="service:UncategorizedFault" />
            <wsdl:fault name="FormatParameterFault"
                        message="service:FormatParameterFault" />
            <wsdl:fault name="FormatVersionParameterFault"
                        message="service:FormatVersionParameterFault" />
            <wsdl:fault name="DocumentTypeParameterFault"
                        message="service:DocumentTypeParameterFault" />
        </wsdl:operation>
        <wsdl:operation name="sendDocumentAcknowledgement">
            <wsdl:input message="service:sendDocumentAcknowledgement" />
            <wsdl:output message="service:sendDocumentAcknowledgementResponse" />
            <wsdl:fault name="UnauthorizedFault" 
						message="service:UnauthorizedFault" />
            <wsdl:fault name="UncategorizedFault"
                        message="service:UncategorizedFault" />
            <wsdl:fault name="FormatParameterFault"
                        message="service:FormatParameterFault" />
            <wsdl:fault name="FormatVersionParameterFault"
                        message="service:FormatVersionParameterFault" />
            <wsdl:fault name="DocumentTypeParameterFault"
                        message="service:DocumentTypeParameterFault" />
        </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="ITEKDocumentMessageServiceBinding" 
				  type="service:ITEKDocumentMessageServiceType">
        <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
                      style="document" />
        <wsdl:operation name="getNextDocument">
            <soap:operation style="document" soapAction="http://service.itek.de/document-exchange/types2/getNextDocument" />
            <wsdl:input>
                <soap:body use="literal" />
            </wsdl:input>
            <wsdl:output>
                <soap:body use="literal" />
            </wsdl:output>
            <wsdl:fault name="UnauthorizedFault" />
			<wsdl:fault name="UncategorizedFault" />
            <wsdl:fault name="FormatParameterFault" />
            <wsdl:fault name="FormatVersionParameterFault" />
            <wsdl:fault name="DocumentTypeParameterFault" />
        </wsdl:operation>
        <wsdl:operation name="sendDocumentAcknowledgement">
            <soap:operation style="document" soapAction="http://service.itek.de/document-exchange/types2/sendDocumentAcknowledgement" />
            <wsdl:input>
                <soap:body use="literal" />
            </wsdl:input>
            <wsdl:output>
                <soap:body use="literal" />
            </wsdl:output>
            <wsdl:fault name="UnauthorizedFault" />
			<wsdl:fault name="UncategorizedFault" />
            <wsdl:fault name="FormatParameterFault" />
            <wsdl:fault name="FormatVersionParameterFault" />
            <wsdl:fault name="DocumentTypeParameterFault" />
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="ITEKDocumentMessageService">
        <wsdl:port name="ITEKDocumentMessageServicePort" 
				   binding="service:ITEKDocumentMessageServiceBinding">
            <soap:address location="http://service.itek.de/document-exchange/services/ITEKDocumentMessageService" />
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>