#!/usr/bin/perl -w
use RPC::XML;
use RPC::XML::Server;
use Data::Dumper;
# xml rpc server
$server = RPC::XML::Server->new(host => 'localhost', port => '8888', queue=>'5', no_default=>1, no_http=>0);
$server->add_method({ name => 'test', signature => [ 'struct struct' ], code => \&test });
$server->server_loop;
sub test {
print Dumper(\@_);
my $serv = shift;
my $hash = shift;
print Dumper(\$hash);
my %hash = %$hash;
print Dumper(\%hash);
if ($hash{called_number_int}) {
return {'answer' => 'OK bejby'};
} else {
return RPC::XML::fault->new('444', 'not good');
}
}
####
#!/usr/bin/perl -w
require RPC::XML;
require RPC::XML::Client;
use Data::Dumper;
my @params = ({
'called_number_net'=>{"nat"=>3,"number"=>223344600},
'called_number_int'=>'+420223344600',
'event_type'=>1,
});
$cli = RPC::XML::Client->new('http://localhost:8888/RPC2');
$request = RPC::XML::request->new('test', @params);
$resp = $cli->send_request($request);
print Dumper(\$resp);
$hash = $resp->value;
print Dumper (\$hash);
print $hash->{answer};
print "\n";
####
./rpcxmlserver.pl
$VAR1 = [
bless( {
'__response' => bless( {
'_content' => '',
'_rc' => 200,
'_headers' => bless( {
'content-type' => 'text/xml',
'accept' => 'text/xml',
'accept-encoding' => 'deflate',
'rpc-server' => 'RPC::XML::Server/1.44',
'rpc-encoding' => 'XML-RPC'
}, 'HTTP::Headers' ),
'_msg' => 'OK'
}, 'HTTP::Response' ),
'method_name' => 'test',
'__started' => 1204548264,
'__auto_methods' => 0,
'__method_table' => {
'test' => bless( {
'signature' => [
'struct struct'
],
'sig_table' => {
'struct' => 'struct'
},
'name' => 'test',
'code' => sub { "DUMMY" }
}, 'RPC::XML::Method' )
},
'__compress_re' => qr/(?-xism:deflate)/,
'__message_temp_dir' => '',
'__auto_updates' => 0,
'__compress' => 'deflate',
'__daemon' => bless( \*Symbol::GEN0, 'HTTP::Daemon' ),
'__message_file_thresh' => 1048576,
'__xpl_path' => [],
'__version' => 'RPC::XML::Server/1.44',
'__path' => '',
'__timeout' => 10,
'__compress_thresh' => 4096,
'__debug' => 0,
'signature' => [
'struct',
'struct'
],
'__requests' => 0,
'__parser' => bless( {
'stack' => [],
'cdata' => '+420223344600'
}, 'RPC::XML::Parser' ),
'__port' => '8888',
'__host' => 'localhost'
}, 'RPC::XML::Server' ),
{
'called_number_net' => {
'nat' => '3',
'number' => '223344600'
},
'event_type' => '1',
'called_number_int' => '+420223344600'
}
];
$VAR1 = \{
'called_number_net' => {
'nat' => '3',
'number' => '223344600'
},
'event_type' => '1',
'called_number_int' => '+420223344600'
};
$VAR1 = {
'called_number_net' => {
'nat' => '3',
'number' => '223344600'
},
'event_type' => '1',
'called_number_int' => '+420223344600'
};
####
./rpcxmlklient.pl
$VAR1 = \bless( {
'answer' => bless( do{\(my $o = 'OK bejby')}, 'RPC::XML::string' )
}, 'RPC::XML::struct' );
$VAR1 = \{
'answer' => 'OK bejby'
};
OK bejby
####
my $serv = shift;
my $hash = shift;
my %hash = %$hash;
####
$hash = $resp->value;