use warnings; use strict; use Data::Dumper; # preparation use XML::Compile; use XML::Compile::WSDL11; # use WSDL version 1.1 use XML::Compile::SOAP11; # use SOAP version 1.1 use XML::Compile::Transport::SOAPHTTP; ## Take login and password from command-line our ($U, $P) = @ARGV; printf STDERR "Using XML-Compile version\t%s\n", $XML::Compile::VERSION; printf STDERR "Using XML-Compile-SOAP version\t%s\n", $XML::Compile::SOAP::VERSION; my $ws = XML::Compile::WSDL11->new(); ## Get WSDL from file... #$ws->addWSDL('C:\Users\cde\Desktop\Bugs\RSD\projects\Salesforce\enterprise-2013-12-16.xml'); $ws->addWSDL('C:\Users\cde\Desktop\Bugs\RSD\projects\Salesforce\sandbox-2013-12-18.xml'); ## Precompile methods for all Web-Services ## This happens only once, so slow for 1-shot scripts ## (use $rm_ws->compileClient() for individual functions ## http://supporter05:9080/RSDGlass/ws/public/v3/recordManagement/soap?wsdl my $ini = $ws->compileClient('login'); my ($ret, $trace); ($ret, $trace) = $ini->( username => $U, password=> $P); #$trace->printErrors(*STDERR); exit; #print Dumper($ret); exit; # You may get an error back from the server if(my $f = $ret->{Fault}) { my $errname = $f->{_NAME}; my $error = $ret->{$errname}; printf "Error %s (%s)\n", $errname, $f->{faultstring}; # print Dumper($ret); exit; } my $login = $ret->{parameters}{result}; my $sh = { sessionId => $login->{sessionId}}; ## Information/debugging utilities #$ws->printIndex; exit; #print $ws->explain('login', PERL => 'INPUT', recurse => 1); #exit; #print $ws->explain('logout', PERL => 'INPUT', recurse => 1); exit; #print $ws->explain('describeSObject', PERL => 'INPUT', recurse => 1); exit; $ws->compileCalls(endpoint => $login->{serverUrl}); ($ret, $trace) = $ws->call('getServerTimestamp', SessionHeader => $sh); #($ret, $trace) = $ws->call('describeGlobal', SessionHeader => $sh); #($ret, $trace) = $ws->call('describeSObject', SessionHeader => $sh, parameters => {sObjectType => 'Account' }); #($ret, $trace) = $ws->call('describeSObject', SessionHeader => $sh, parameters => {sObjectType => 'Machine__c' }); print Dumper($ret); ($ret, $trace) = $ws->call('logout', SessionHeader => $sh); #print Dumper($ret); exit;