SOAP::Lite client for document/literal .NET web services
Update
Recently (it's early September 2008) Microsoft released an update that made the original example in this entry fail with an error along to the lines of:
Thanks to a colleague, here's a very minor alteration that should fix the problem:
use SOAP::Lite; # +trace
use strict;
my $uri = 'http://www.webserviceX.NET';
my $url = 'http://www.webservicex.net/globalweather.asmx';
my $soap = SOAP::Lite
->uri($uri)
->on_action( sub { '"' . $uri . $_[1] . '"' } ) # surround with double quotes
->proxy($url)
->autotype(0);
# $soap->readable(1);
my $method = SOAP::Data->name('GetWeather')->attr({xmlns =>$uri});
my $result = $soap->call($method => (
SOAP::Data->name('CityName')->value('Cambridge'),
SOAP::Data->name('CountryName')->value('United Kingdom'),)
)->result;
The original example below probably works with .NET web services that haven't yet had the latest update from Microsoft applied:
use SOAP::Lite; # +trace
use strict;
my $uri = 'http://www.webserviceX.NET';
my $url = 'http://www.webservicex.net/globalweather.asmx';
my $soap = SOAP::Lite
-> uri($uri)
-> on_action( sub { join '/', $uri, $_[1] } )
-> proxy($url);
$soap->autotype(0);
# $soap->readable(1);
my $method = SOAP::Data->name('GetWeather')->attr({xmlns =>$uri});
my $result = $soap->call($method => (
SOAP::Data->name('CityName')->value('Cambridge'),
SOAP::Data->name('CountryName')->value('United Kingdom'),)
)->result;
0 TrackBacks
Listed below are links to blogs that reference this entry: SOAP::Lite client for document/literal .NET web services.
TrackBack URL for this entry: http://www.robbiebow.co.uk/mt/mt-tb.cgi/48

Leave a comment