I have seen number of questions on the forums on issues related to this. So here are some tips on getting to know spec versions by looking at a soap message with http headers.
Here is an example SOAP1.1 one message.
POST /samples/echo_service.php HTTP/1.1
User-Agent: Axis2C/1.5.0
SOAPAction: ""
Content-Length: 242
Content-Type: text/xml;charset=UTF-8
Host: 127.0.0.1:8080<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<ns1:echoString xmlns:ns1="http://wso2.org/wsfphp/samples">
<text>Hello World!</text>
</ns1:echoString>
</soapenv:Body></soapenv:Envelope>
I have marked highlighted the important points.
In SOAP1.1
1. Content-Type will be "text/xml".
2. SOAPAction is a separate HTTP Header
3. SOAP envelope namespace uri is "http://schemas.xmlsoap.org/soap/envelope/"
Here is a SOAP 1.2 message.
POST /samples/echo_service.php HTTP/1.1
User-Agent: Axis2C/1.5.0
Content-Length: 240
Content-Type: application/soap+xml;charset=UTF-8;action="urn:echoString"
Host: 127.0.0.1:8080<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
<soapenv:Header/>
<soapenv:Body>
<ns1:echoString xmlns:ns1="http://wso2.org/wsfphp/samples">
<text>Hello World!</text>
</ns1:echoString>
</soapenv:Body></soapenv:Envelope>
In SOAP 1.2
1. Content-Type header is "application/soap+xml"
2. SOAP envelope namespace uri is "http://www.w3.org/2003/05/soap-envelope".
3. soap action header will go in the Content-type header as 'action'
Depending on you requirement, you can switch between between soap versions by passing the option "useSOAP"=>1.1 or "useSOAP"=>1.2.
For a service in WSF/PHP, the soap version does not matter since the framework is capable of handling either type.
No comments:
Post a Comment