1#!perl -w 2#!d:\perl\bin\perl.exe 3 4# -- SOAP::Lite -- soaplite.com -- Copyright (C) 2001 Paul Kulchenko -- 5 6# example for Microsoft's TerraServer http://terraserver.microsoft.net/ 7# thanks to Ivan R. Judson <judson@mcs.anl.gov> for his help 8 9use SOAP::Lite; 10 11# terraserver doesn't like charset in content-type 12$SOAP::Constants::DO_NOT_USE_CHARSET = 1; 13 14my $terra = SOAP::Lite 15 ->proxy('http://terraserver.microsoft.net/TerraService.asmx') 16 ->on_action(sub { join '/', 'http://terraservice.net/terraserver', $_[1] }) 17 ->uri('http://tempuri.org/') 18; 19 20my $response = $terra->GetTheme(SOAP::Data->name(theme => 'Photo')); 21 22if ($response->fault) { 23 die $response->faultstring; 24} else { 25 my %result = %{$response->result}; 26 print map("$_: @{[$result{$_} || '']}\n", keys %result), "\n"; 27} 28 29my $method = SOAP::Data->name('GetPlaceList') 30 ->attr({xmlns => 'http://tempuri.org/'}); 31 32my @params = ( 33 SOAP::Data->name(placeName => 'Chicago'), 34 SOAP::Data->name(MaxItems => 10), 35 SOAP::Data->name(imagePresence => 'true') 36); 37 38$response = $terra->call($method => @params); 39 40if ($response->fault) { 41 print $response->faultcode, " ", $response->faultstring, "\n"; 42} else { 43 foreach ($response->valueof('//PlaceFacts')) { 44 my %result = %{$_->{Place}}; 45 print map("$_: $result{$_}\n", keys %result), "\n"; 46 } 47} 48