Re: using the RPC::XML perl module, getting started
Ted Pedersen <[email protected]> Thu, 13 Jan 2011 19:51:49 -0600
| Newsgroups | gmane.text.xml.rpc.specification |
|---|---|
| Message-ID | <[email protected]> |
BTW, the Dumper idea works just fine - I must have made a simple error...So
here's that client again...
require RPC::XML::Client;
use Data::Dumper;
my $client = RPC::XML::Client->new('http://localhost:19000');
my $response = $client->send_request('books');
print Dumper $response -> value;
exit;
And then the output...
$VAR1 = [
'1',
'2',
'3'
];
So...all is well! This is exactly as you described, but just wanted to
confirm that this works as advertised.
Thanks again,
Ted
On Thu, Jan 13, 2011 at 7:33 PM, Ted Pedersen <[email protected]> wrote:
> Hi Bill,
>
> Yes, this is exactly the sort of example I needed! I am not quite sure what
> happened, but the Dumper didn't seem to want to display the output, but I
> was able to modify the following client example combined with your
> suggestion and achieved some success.
>
> http://www.herongyang.com/Perl/RPC-XML-Client-Sample-Program.html
>
> So...here's the server, following your suggestion....
>
>
> use XRFortune;
> use RPC::XML::Server;
>
> # The object created by the constructor will be used to
> # chain on a set of calls to add_proc() (which means it
> # isn't necessary to deal with the local routines being
> # called as methods), and then drop directly into the
> # server_loop() method.
>
> RPC::XML::Server->new(port => 19000)
> # add_proc can take a pre-created RPC::XML::Procedure
> # object, or a hash reference.
> ->add_proc({ name => 'books',
> signature => [ 'array',
> 'array string',
> 'array array' ],
> code => sub {return [1,2,3] }})
> ->server_loop;
>
> exit;
>
> And then here is the client, more or less following the site above...
>
> require RPC::XML::Client;
>
>
> my $client = RPC::XML::Client->new('http://localhost:19000');
>
> my $res = $client->send_request('books');
> print " Response class = ".(ref $res)."\n";
> print " Response type = ".$res->type."\n";
> print " Response string = ".$res->as_string."\n";
> print " Response value = ".$res->value."\n";
> foreach (@{$res->value}) {
> print " $_\n";
> }
>
> exit;
>
> And then the output....
>
> Response class = RPC::XML::array
> Response type = array
> Response string =
> <array><data><value><int>1</int></value><value><int>2</int></value><value><int>3</int></value></data></array>
> Response value = ARRAY(0x8a0385c)
> 1
> 2
> 3
>
> And this is very satisfying indeed, since I'm now convinced this actually
> can work (seeing is believing :)
>
> I'll see if I can make some more progress now, but this was really a big
> help.
>
> Thanks!
> Ted
>
>
>
>
> On Thu, Jan 13, 2011 at 3:15 PM, Bill Moseley <[email protected]> wrote:
>
>>
>>
>> On Thu, Jan 13, 2011 at 12:56 PM, Ted Pedersen <[email protected]<duluthted%40gmail.com>>
>> wrote:
>>
>> >
>> > So...given that I have this server running, what should the client look
>> > like
>> > to get this going?
>> >
>>
>> Well, I think those methods return a reference to a list. I don't have the
>> fortune program, so I just replaced the code like this:
>>
>> RPC::XML::Server->new(port => 19000)
>>
>> # add_proc can take a pre-created RPC::XML::Procedure
>> # object, or a hash reference.
>> ->add_proc({ name => 'books',
>> signature => [ 'array',
>> 'array string',
>> 'array array' ],
>> code => sub { return [1,2,3]} })
>>
>> And then the client:
>>
>> use strict;
>> use warnings;
>> use RPC::XML::Client;
>> use Data::Dumper;
>>
>> my $client = RPC::XML::Client->new( 'http://localhost:19000' );
>> my $response = $client->send_request( 'books' );
>> print Dumper $response->value;
>>
>> Which returns:
>>
>> $VAR1 = [
>> '1',
>> '2',
>> '3'
>> ];
>>
>> You would want to add a bit more error handling, of course.
>>
>> Is that what you are after?
>>
>>
>> --
>> Bill Moseley
>> [email protected] <moseley%40hank.org>
>>
>> [Non-text portions of this message have been removed]
>>
>>
>>
>
>
>
> --
> Ted Pedersen
> http://www.d.umn.edu/~tpederse <http://www.d.umn.edu/%7Etpederse>
>
--
Ted Pedersen
http://www.d.umn.edu/~tpederse
[Non-text portions of this message have been removed]
------------------------------------
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/xml-rpc/
<*> Your email settings:
Individual Email | Traditional
<*> To change settings online go to:
http://groups.yahoo.com/group/xml-rpc/join
(Yahoo! ID required)
<*> To change settings via email:
[email protected]
[email protected]
<*> To unsubscribe from this group, send an email to:
[email protected]
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/