Forum: Ruby xml-rpc calling question

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Cd7b20cad5c6851f1e231bfd2a714e42?d=identicon&s=25 dhf0820.lists@gmail.com (Guest)
on 2009-02-28 15:01
(Received via mailing list)
I am trying to understand the XMLRPC client library and how to use it
properly. I have looked at some of the examples and they area always
add these two numbers together. I need help in writing a client with a
complex structure of data, lots of individual values and arrays of
values, even some structures.

Is there an example of how to create the passed structure a nd pass
it. Or do I pass a hash of thelements?

Don French
4299e35bacef054df40583da2d51edea?d=identicon&s=25 James Gray (bbazzarrakk)
on 2009-02-28 15:43
(Received via mailing list)
On Feb 28, 2009, at 7:59 AM, dhf0820.lists@gmail.com wrote:

> I am trying to understand the XMLRPC client library and how to use it
> properly. I have looked at some of the examples and they area always
> add these two numbers together. I need help in writing a client with a
> complex structure of data, lots of individual values and arrays of
> values, even some structures.
>
> Is there an example of how to create the passed structure a nd pass
> it. Or do I pass a hash of thelements?

Arrays, Hashes, Numeric types, and simple Strings are all handled the
same in XML-RPC.  Just replace the simple data you've seen in the
examples with more complex collections and it should work fine.

James Edward Gray II
Cd7b20cad5c6851f1e231bfd2a714e42?d=identicon&s=25 dhf0820.lists@gmail.com (Guest)
on 2009-02-28 17:27
(Received via mailing list)
On Feb 28, 9:42 am, James Gray <ja...@grayproductions.net> wrote:

> Arrays, Hashes, Numeric types, and simple Strings are all handled the
> same in XML-RPC.  Just replace the simple data you've seen in the
> examples with more complex collections and it should work fine.
>
> James Edward Gray II

Ok I have tried that with the following:
server = XMLRPC::Client.new2("http://websearch.ramaui.com/ramxml.php")
results = server.call("lists",{ "dbid" =>"dbid1113086003", "getlist"
=> "district"})

and I get XMLRPC::FaultException: XMLRPC::FaultException

Also tried this:
results = server.call("lists",{ :dbid =>"dbid1113086003", :getlist =>
"district"})
and same results

finally tried this:
 results = server.call("lists", :dbid =>"dbid1113086003", :getlist =>
"district")

with the same results

I can run this as the base example I took it from:
require 'xmlrpc/client'
require 'pp'

server = XMLRPC::Client.new2("http://rpc.technorati.com/rpc/ping")
result = server.call("weblogUpdates.ping", "Copenhagen.rb", "http://
www.copenhagenrb.dk/")
pp result

And it woks fine.

What is the correct initialization and call?

the actual xml structure that should be passed is this:
<methodCall>
<methodName>lists</methodName>
-
<params>
-
<param>
-
<value>
-
<struct>
-
<member>
<name>dbid</name>
-
<value>
<string>dbid1113086003</string>
</value>
</member>
-
<member>
<name>getlist</name>
-
<value>
<string>district</string>
</value>
</member>
</struct>
</value>
</param>
</params>
</methodCall>

When called from an unapproved ip it should come back with a message
stating so.

Don French
Any ideas?
4299e35bacef054df40583da2d51edea?d=identicon&s=25 James Gray (bbazzarrakk)
on 2009-03-01 02:18
(Received via mailing list)
On Feb 28, 2009, at 10:23 AM, dhf0820.lists@gmail.com wrote:

> Ok I have tried that with the following:
> server = XMLRPC::Client.new2("http://websearch.ramaui.com/ramxml.php")
> results = server.call("lists",{ "dbid" =>"dbid1113086003", "getlist"
> => "district"})

This looks right to me.

> the actual xml structure that should be passed is this:

> When called from an unapproved ip it should come back with a message
> stating so.

They both seem to be what we are seeing:

$ ruby xtest.rb
xtest.rb:7: warning: method redefined; discarding old call2
<?xml version="1.0" ?><methodCall><methodName>lists</
methodName><params><param><value><struct><member><name>getlist</
name><value><string>district</string></value></
member><member><name>dbid</name><value><string>dbid1113086003</
string></value></member></struct></value></param></params></methodCall>
/usr/local/lib/ruby/1.8/xmlrpc/client.rb:414:in `call': You do not
have access to XML-RPC WebSearch. (XMLRPC::FaultException)
   Contact websearch@ramaui.com if you have any questions.
  from xtest.rb:16
$ cat xtest.rb
#!/usr/bin/env ruby -wKU

require "xmlrpc/client"

# Patch XML-RPC to show us what is sent.
class XMLRPC::Client
   def call2(method, *args)
     request = create().methodCall(method, *args)
     puts request
     data = do_rpc(request, false)
     parser().parseMethodResponse(data)
   end
end

server  = XMLRPC::Client.new2("http://websearch.ramaui.com/ramxml.php")
results = server.call( "lists", "dbid"    => "dbid1113086003",
                                 "getlist" => "district" )

__END__

What make you think this isn't working?

James Edward Gray II
This topic is locked and can not be replied to.