Hello,
I am trying to implement a SOAP header based session ID that is
compatible with Apache Axis' SimpleSessionHandler. I want to add a
soap:header to each operation in my binding; the specific issue is that
I can't figure out how to use SOAP headers with RPC encoding.
I've managed to hack together a small, but working, example of using
SOAP headers with literal encoding, which is derived from the tests in
the SOAP extension source (attached).
My attempts to convert it to RPC result in segmentation faults, and the
only examples of RPC encoding with headers I can find (namely T57.phpt)
use references, which I'm not sure how to fix.
Thanks,
Harlan Iverson
<?xml version="1.0"?>
<definitions name="SOAP-12-TestDefinitions"
targetNamespace="http://whitemesa.net/wsdl/soap12-test"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:enc="http://www.w3.org/2003/05/soap-encoding"
xmlns:tns="http://whitemesa.net/wsdl/soap12-test"
xmlns:types="http://example.org/ts-tests/xsd"
xmlns:test="http://example.org/ts-tests"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:enc11="http://schemas.xmlsoap.org/soap/encoding/">
<types>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
targetNamespace="http://example.org/ts-tests">
<!-- unknown header block type -->
<complexType name="UnknownType">
<sequence>
<element minOccurs="0" maxOccurs="1" name="stringValue" type="xsd:string" />
</sequence>
</complexType>
<!-- 3.2.1 echoOk -->
<element name="echoOk" type="xsd:string"/>
<!-- 3.2.2 responseOk -->
<element name="responseOk" type="xsd:string"/>
<!-- 3.2.4 requiredHeader -->
<element name="requiredHeader" type="xsd:string"/>
<element name="echoHeader" type="xsd:string"/>
<element name="echoHeaderResponse" type="xsd:string"/>
<element name="Unknown" type="types:UnknownType" />
</schema>
</types>
<!-- echoOk body/header block -->
<message name="echoOkRequest">
<part name="echoOk" element="test:echoOk"/>
</message>
<message name="echoOkResponse">
<part name="responseOk" element="test:responseOk"/>
</message>
<message name="requiredHeaderRequest">
<part name="requiredHeader" element="test:requiredHeader"/>
</message>
<message name="echoHeaderRequest">
<part name="responseHeader" element="test:echoHeader"/>
</message>
<message name="echoHeaderResponse">
<part name="responseHeader" element="test:echoHeaderResponse"/>
</message>
<!-- "unknown" header block -->
<message name="UnknownHdrBlockLit">
<part name="Unknown" element="test:Unknown" />
</message>
<message name="UnknownHdrBlockEnc">
<part name="Unknown" type="types:UnknownType" />
</message>
<portType name="Soap12TestPortTypeDoc">
<operation name="requiredHeader">
<input message="tns:requiredHeaderRequest" />
</operation>
<operation name="echoHeader">
<input message="tns:echoHeaderRequest" />
<output message="tns:echoHeaderResponse" />
</operation>
</portType>
<binding name="Soap12TestDocBinding" type="tns:Soap12TestPortTypeDoc">
<soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
<operation name="requiredHeader">
<soap12:operation/>
<input>
<soap12:body use="literal" />
</input>
</operation>
<operation name="echoHeader">
<soap12:operation/>
<input>
<soap12:body use="literal" />
<soap12:header message="tns:echoOkRequest" part="echoOk" use="literal" />
<soap12:header message="tns:UnknownHdrBlockLit" part="Unknown" use="literal" />
</input>
<output>
<soap12:body use="literal" />
<soap12:header message="tns:echoOkResponse" part="responseOk" use="literal" />
</output>
</operation>
</binding>
<service name="WhiteMesaSoap12TestSvc">
<port name="Soap12TestDocPort" binding="tns:Soap12TestDocBinding">
<soap12:address location="http://localhost/soap12/test-doc"/>
</port>
</service>
</definitions>
--
PHP Soap Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php