XMLRPC calling question


#1

I have a mashup I need to d with a site that uses xmlrpc. I am trying
to understand the the call method. I have the following items that
need to be passed to the remote site.

methodName
and the following structure
ID - string
area - string
views = array of strings

I know what the xml should look like

lists





id

12345



list

district



View




Ocean


Mountain


Golf Course


Garden View









I have results from various inputs from the view for the value. I am
trying to figure out how to create the xml structure and how to use it
in the XMLRPC call.

Any help?

Don F.


#2

erb. Set up a boilerplate file and fill in what you need. It’s MUCH
faster than trying to generate it with REXML.

On Mon, Feb 23, 2009 at 6:57 PM, Don F. removed_email_address@domain.invalid wrote:

I know what the xml should look like
[…lots of xml…]


#3

OK I can do that, but how is that result string of xml passed to the
server I have a variable remote_server that was created with the
XMLRPC::Client.new2 call. how do I then call the method “search” on
that serve?

Don F.


#4

Why not

require ‘xmlrpc/client’
@server = XMLRPC::Client.new((secure) ? MY_SECURE_URN : MY_URN,
MY_ENDPOINT, nil, nil, nil, nil, nil, secure)
@server.call(‘my.method.name’, {:id => 1, :area => ‘someplace’}

etc.

I’ve had nothing but good results from xmlrpc. Any reason not to use it?


#5

Thank you. I assume the args parameter is a hash of the variou values
to be put into the XML. Correct?
Does the call method actually generates the XML as I described, or do
I have to generate it?

Don F.


#6

I access 3rd party software through xmlrpc calls. I built mine as a
plugin… but i’ll extract some of it for you in this example below:

require “xmlrpc/client”

def api_perform(class_type, method, args)
begin
server = XMLRPC::Client.new3({‘host’ => @api_url, ‘path’ => “/api/
xmlrpc”, ‘port’ => 443, ‘use_ssl’ => true})
result = server.call("#{class_type}.#{method}", @api_key, args)
rescue XMLRPC::FaultException => e
puts "
* Error: #{e.faultCode} - #{e.faultString} ***"
end

return result
end

The result that’s returned is a Hash.

Hope this helps.