Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re: More Soap::Lite

by Anonymous Monk
on Sep 25, 2012 at 20:22 UTC ( #995628=note: print w/ replies, xml ) Need Help??


in reply to More Soap::Lite

I have (mostly) figured out soap::lite. ... but the question is how? a loop of some sort is, obviously, needed. But where to I put it?

#!/usr/bin/perl -- use SOAP::Lite; my $soap = SOAP::Lite->proxy( 'http://localhost/blah/DummyService', timeout => 0.00001, ); $soap->transport->add_handler("request_send", \&pp_dump ); my $serializer = $soap->serializer(); my @data = ( SOAP::Data->name( 'request' => \SOAP::Data->value( SOAP::Data->name('actionTime')->value('actionTime'), SOAP::Data->name('id')->value('id')->type('long'), SOAP::Data->name('state')->value('state')->type('string'), SOAP::Data->name('result')->value('result')->type('string' +) ) ), SOAP::Data->name( 'request' => \SOAP::Data->value( SOAP::Data->name('actionTime')->value('actionTime'), SOAP::Data->name('id')->value('id')->type('long'), SOAP::Data->name('state')->value('state')->type('string'), SOAP::Data->name('result')->value('result')->type('string' +) ) ), ); print pp( $serializer->envelope( method => SOAP::Data->name('release')->attr( { 'xmlns', 'ns' } + ), @data, ), ); $soap->call( SOAP::Data->name('release')->attr( { 'xmlns', 'ns' } ), @data, ); sub pp { use XML::Twig; open my($fh), '>', \my $str; no warnings 'newline'; XML::Twig->new( qw! pretty_print record ! )->parse( @_ )->print( $fh ); return $str; } sub pp_dump { { my $content = $_[0]->content(''); $_[0]->content( pp($content) ); } print $_[0]->as_string,"\n"; return; }


Comment on Re: More Soap::Lite
Download Code
Re^2: More Soap::Lite
by fritz1968 (Sexton) on Sep 28, 2012 at 17:35 UTC

    Thanks for the code. I modeled my code after yours and came up with the following:

    foreach $rHash (@userData) { my $tempString = (); $tempString=SOAP::Data->name('request' => \SOAP::Data->value( SOAP::Data->name('actionTime')->value($zTime), SOAP::Data->name('id')->value($id1)->type('long'), SOAP::Data->name('state')->value($state1)->type('string'), SOAP::Data->name('result')->value($result1)->type('string') )); push(@soapArray, $tempString); }# end foreach my $release_response = release($proxy, $xmlns, @soapArray);

    Before the above code is executed, the user Data is retrieved from a WSDL and stored in an array - @userData - of hashes. That array of hashes is ran through a foreach loop to dynamically format each record to a string ($tempString) and then to add that string to an array (@soapArray). Then I call a subroutine and pass the necessary information to execute the WSDL call:
    my $release_response = release($proxy, $xmlns, @soapArray);

    In the subroutine, I make the WSDL call:

    my ($proxy1, $xmlns1, @array1) = @_; # IIS web services expect / as a separator for uri and method. my $lite = SOAP::Lite->new()->on_action(sub { join '/', @_ } ) ->proxy($proxy1), SOAP::Header->name('Authentication' => SOAP::Header->value( SOAP::Header->name('user')->value($zID), SOAP::Header->name('password')->value($zPW))); my $response = $lite->call( SOAP::Data->name('release') ->attr({ 'xmlns', $xmlns1}), @array1 ); return $response;

    The name of the array changes in the subroutine from @soapArray to @array1.

    Again, thanks for the help. It is much appreciated.
    Frank

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://995628]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (11)
As of 2014-10-01 21:34 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    What is your favourite meta-syntactic variable name?














    Results (38 votes), past polls