in reply to Re^4: SOAP::Lite method with one param
in thread SOAP::Lite method with one param

That is not self contained like this
#!/usr/bin/perl -- use strict; use warnings; use SOAP::Lite; my $soap = SOAP::Lite -> uri('http://127.0.0.1/MyModule') -> proxy('http://127.0.0.1:1203') ;;;;;;;;; $soap->transport->add_handler("request_send", \&pp_dump ); $soap->transport->add_handler("response_done", \&pp_dump ); ); $soap->autotype(0)->readable(1); $soap->serializer->envprefix('S'); $soap->ns( "http://www.bluearc.com/BAService/LocalGroupProvider" , 'ns +0' ); my $evsId = SOAP::Data->new( 'name' => 'evsId', 'value' => 'evsId', 'prefix' => 'ns0', 'type' => 'unsignedShort' ); $soap->call( 'getAllLocalGroups', $evsId ); sub pp_twig { use XML::Twig; open my($fh), '>', \my $str; no warnings 'newline'; #~ XML::Twig->new(qw! pretty_print record !)->xparse(@_)->print( $ +fh ); XML::Twig->new(qw! pretty_print record !)->parse(@_)->print( $fh ) +; $str =~ s/ xmlns/\n xmlns/g; return $str; } sub pp_dump { my $content = $_[0]->content(''); $_[0]->content( pp_twig($content) ); print $_[0]->as_string,"\n"; return; } __END__ POST http://127.0.0.1:1203 HTTP/1.1 Accept: text/xml Accept: multipart/* Accept: application/soap User-Agent: SOAP::Lite/Perl/1.11 Content-Length: 573 Content-Type: text/xml; charset=utf-8 SOAPAction: "http://www.bluearc.com/BAService/LocalGroupProvider#getAl +lLocalGroups" <?xml version="1.0" encoding="UTF-8"?> <S:Envelope S:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/ +" xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://www.bluearc.com/BAService/LocalGroupProvider" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <S:Body> <ns0:getAllLocalGroups> <ns0:evsId xsi:type="xsd:unsignedShort">evsId</ns0:evsId> </ns0:getAllLocalGroups> </S:Body> </S:Envelope>

Replies are listed 'Best First'.
Re^6: SOAP::Lite method with one param
by montaseri (Initiate) on Jan 22, 2015 at 22:34 UTC
    I see that your code is generating
    <S:Body> <ns0:getAllLocalGroups> <ns0:evsId xsi:type="xsd:unsignedShort">evsId</ns0:evsId> </ns0:getAllLocalGroups> </S:Body>
    I would like to generate this
    <S:Body> <ns0:getAllLocalGroups> 1 </ns0:getAllLocalGroups> </S:Body>
    Please show me how you would use SOAP::Lite to generate that.

    Again, note there is no element called evsId, the value of evsId is placed in an element that is also the methodName, that of "getAllLocalGroups".

      I don't think you can without writing your own serializer ... treasure trove has example