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

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

Replies are listed 'Best First'.
Re^5: SOAP lite with WCF
by Anonymous Monk on Jul 08, 2013 at 00:45 UTC

    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?

        How? Here I specify the SOAP Action name ProcessMessage - no mention of 'Request' here.

        So what, you're using two variables  $_[0] and $_[1] , maybe one of them has "Request"

        If you don't know whats going on, Basic debugging checklist says Dumper() Dumper() Dumper()

        But this seems to also append the word 'Request' to my soap action?

        What happens when you comment that line out?

      Here is a tip
      -> on_action( \&return_action_header ) .... ;;;; sub return_action_header { my( $action, $method_uri, $method_name ) = @_; return ... }