http://www.perlmonks.org?node_id=974275


in reply to SOAP::Lite server handling multiple requests in the same envelope

I think you need to share the client for this server

  • Comment on Re: SOAP::Lite server handling multiple requests in the same envelope

Replies are listed 'Best First'.
Re^2: SOAP::Lite server handling multiple requests in the same envelope
by atpetkov (Initiate) on Jun 04, 2012 at 12:30 UTC
    I do not know what client will be used to access it, so the server should not be tailored to a specific client. I am currently using soapUI to send sample requests like the one I posted above.

      I do not know what client will be used to access it, so the server should not be tailored to a specific client. I am currently using soapUI to send sample requests like the one I posted above.

      For some reason you've chosen SOAP::Lite, I think the first thing you should figure out is how to send your desired request using a SOAP::Lite client -- I don't think you'll be able to figure it out on your own :)

      Its not like I've seen tons of SOAP, but from what dozen I've seen, they all pretty much stick to a single child for Body -- deviating from this will create work for everyone who wants to connect to your server -- if you've got WSDL I'd like to see it

        I am currently trying to design a SOAP::Lite client for testing purposes, so that will be the next step. I just don't know what client the users of this service will be using.

        If you are saying that it is not possible to have more than one child, then maybe the issue should be addressed on the client side?

        Here is the WSDL:
        <?xml version="1.0" encoding="UTF-8"?> <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="ns://TestSoapServer/SoapServer" xmlns:ns="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://schemas.xmlsoap.org/soap/encoding/" targetNamespace="ns://TestSoapServer/SoapServer"> <types> <schema xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="ns://TestSoapServer/SoapServer"> <simpleType name="Credential"> <restriction base="string"> <maxLength value="20"/> </restriction> </simpleType> <complexType name="CreateRecordType"> <annotation> <documentation> CreateRecordType </documentation> </annotation> <sequence> <element name="param_1" type="tns:Credential"/> <element name="param_2" type="tns:Credential"/> </sequence> </complexType> <complexType name="UpdateRecordType"> <annotation> <documentation> UpdateRecordType </documentation> </annotation> <sequence> <element name="param_1" type="tns:Credential"/> <element name="param_2" type="tns:Credential"/> </sequence> </complexType> <complexType name="DeleteRecordType"> <annotation> <documentation> DeleteRecordType </documentation> </annotation> <sequence> <element name="param_1" type="tns:Credential"/> <element name="param_2" type="tns:Credential"/> </sequence> </complexType> <simpleType name="ResponseCodeType"> <restriction base="nonNegativeInteger"/> </simpleType> <complexType name="ResponseType"> <sequence> <element name="responseCode" type="tns:ResponseCod +eType"/> <element name="responseCodeDescription" type="stri +ng"/> </sequence> </complexType> <element name="createRecord" type="tns:CreateRecordType"/> <element name="updateRecord" type="tns:UpdateRecordType"/> <element name="deleteRecord" type="tns:DeleteRecordType"/> <element name="Response" type="tns:ResponseType"/> </schema> </types> <message name="CreateMessage"> <part name="parameter" element="tns:createRecord"/> </message> <message name="UpdateMessage"> <part name="parameter" element="tns:updateRecord"/> </message> <message name="DeleteMessage"> <part name="parameter" element="tns:deleteRecord"/> </message> <message name="ResponseMessage"> <part name="parameter" element="tns:Response"/> </message> <portType name="PortType"> <operation name="createRecord"> <input message="tns:CreateMessage"/> <output message="tns:ResponseMessage"/> </operation> <operation name="updateRecord"> <input message="tns:UpdateMessage"/> <output message="tns:ResponseMessage"/> </operation> <operation name="deleteRecord"> <input message="tns:DeleteMessage"/> <output message="tns:ResponseMessage"/> </operation> </portType> <binding name="SoapBinding" type="tns:PortType"> <soap:binding style="document" transport="http://schemas.xmlso +ap.org/soap/http"/> <operation name="createRecord"> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> <operation name="updateRecord"> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> <operation name="deleteRecord"> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="SoapService"> <port name="SoapPort" binding="tns:SoapBinding"> <soap:address location="http://test.soap.server:55555"/> </port> </service> </definitions>
        Thanks!