in reply to
Re: More Soap::Lite
in thread More Soap::Lite
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