in reply to Re^2: SOAP lite with WCF
in thread SOAP lite with WCF

Does http://search.cpan.org/dist/SOAP-Lite/lib/SOAP/Lite.pm#on_action%28callback%29 help?

Replies are listed 'Best First'.
Re^4: SOAP lite with WCF
by Anonymous Monk on Jul 07, 2013 at 21:27 UTC
    Possibly but I'm struggling to understand how the function works. If I execute the following:
    my $soap = SOAP::Lite -> ns( 'http://www.w3.org/2001/XMLSchema-instance', 'xsi' ) -> ns( 'urn::sdp:profilemanager:requestmanager', 'a' ) -> ns( 'urn::sdp:profilemanager:contract:110308', 'b' ) -> uri($uri) -> on_action( sub { join '.ProcessMessage', 'urn::sdp:profilemanag +er:requestmanager:100818.ProfileScopeServiceContract', $_[1] } ) -> proxy($url); my $method = SOAP::Data->name('Request') ->attr({xmlns => 'urn::sdp:profilemanager:profilemanagerrequestman +ager:100818'});
    I get the the following so I'm almost there but how do I stop 'Request' being appended to the SOAP Action?
    Accept: text/xml Accept: multipart/* Accept: application/soap Content-Length: 1365 Content-Type: text/xml; charset=utf-8 SOAPAction: urn::sdp:profilemanager:requestmanager:100818.ProfileScope +Ser viceContract.ProcessMessageRequest <?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:namesp1="ur +n:: sdp:profilemanager:profilemanagerrequestmanager:100818" xmlns:a="urn:: +sdp :profilemanager:requestmanager" soap:encodingStyle="http://schemas.xml +soap.org/s oap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" +xmlns:b="u rn::sdp:profilemanager:contract:110308" xmlns:soapenc="http://schemas. +xml soap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-i +nstance" x="" mlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <Request xmlns="urn:telec om:sdp:profilemanager:profilemanagerrequestmanager:100818"> <a:Payload xsi:type=" b:Organisation"> <b:OrganisationUnitId xsi:type="xsd:string"> OrgId</b:Organisat

      I get the the following so I'm almost there but how do I stop 'Request' being appended to the SOAP Action?

      Um, modify on_action so it doesn't append "Request"

        How? Here I specify the SOAP Action name ProcessMessage - no mention of 'Request' here.
        my $soap = SOAP::Lite -> ns( 'http://www.w3.org/2001/XMLSchema-instance', 'xsi' ) -> ns( 'urn::sdp:profilemanager:requestmanager', 'a' ) -> ns( 'urn::sdp:profilemanager:contract:110308', 'b' ) -> uri($uri) -> on_action( sub { join '.ProcessMessage', 'urn::sdp:profilemanag +er:requestmanager:100818.ProfileScopeServiceContract', $_[1] } ) -> proxy($url); And here I assume I'm specifying the name of the first element with th +e Soap Body - Request. <code> my $method = SOAP::Data->name('Request') ->attr({xmlns => 'urn::sdp:profilemanager:profilemanagerrequestman +ager:100818'});
        But this seems to also append the word 'Request' to my soap action?
        Here is a tip
        -> on_action( \&return_action_header ) .... ;;;; sub return_action_header { my( $action, $method_uri, $method_name ) = @_; return ... }