XMLRPC and consuming non-standard sources

I'm trying to use the XMLRPC/client to consume an XMLRPC resource;
unfortunately it does not conform to standards.

So the XML content I have to send to the XMLRPC server needs to be
formatted like so;

<?xml version="1.0" ?>
<FileRequest>
<QuerySub>
<FileId>_number_</FileId>
</QuerySub>
</FileRequest>

Of course the call2 method of class XMLRPC::Client uses this
create().methodCall(method, *args); which generates this request:

<?xml version="1.0" ?>
<methodCall>
<methodName>QuerySub</methodName>
<params>
<param>
<value><string>100001647</string></value>
</param>
</params>
</methodCall>

The response from the XMLRPC source is also non-standard;

Can anyone offer any advice on how I can use the Ruby XMLRPC library and
still format my requests to fit this custom solution? Any advice on how
I can go about this?

···

--
Posted via http://www.ruby-forum.com/.

I think you probably won't have any luck using an XML-RPC client to talk to
a non-XML-RPC server (just a server which happens to talk XML). You may
need to just DIY the request with a normal HTTP library.

···

On Thu, Dec 13, 2012 at 7:11 AM, Tony D. <lists@ruby-forum.com> wrote:

I'm trying to use the XMLRPC/client to consume an XMLRPC resource;
unfortunately it does not conform to standards.

So the XML content I have to send to the XMLRPC server needs to be
formatted like so;

<?xml version="1.0" ?>
<FileRequest>
<QuerySub>
<FileId>_number_</FileId>
</QuerySub>
</FileRequest>

Of course the call2 method of class XMLRPC::Client uses this
create().methodCall(method, *args); which generates this request:

<?xml version="1.0" ?>
<methodCall>
<methodName>QuerySub</methodName>
<params>
<param>
<value><string>100001647</string></value>
</param>
</params>
</methodCall>

The response from the XMLRPC source is also non-standard;

Can anyone offer any advice on how I can use the Ruby XMLRPC library and
still format my requests to fit this custom solution? Any advice on how
I can go about this?

--
Posted via http://www.ruby-forum.com/\.

So you wouldn't suggest overriding methodCall to produce my own flavor
of XML wrapper? Instead using an HTTP library and maybe nokogiri for
parsing?

I'm open to suggestions here; I wanna do what makes the most sense. Not
only to solve the problem now but also for future self or future other
developer.

···

--
Posted via http://www.ruby-forum.com/.

XMLRPC is a protocol. Yet, you don't seem to be heeding the XMLRPC
protocol, so one can only wonder why you think using the XMLRPC library
is appropriate.

···

--
Posted via http://www.ruby-forum.com/.

7stud -- wrote in post #1089019:

No, I think you are misunderstanding what I said above. I know it is a
non-conforming system to the XMLRPC protocol. I did not build the
system; I just have to utilize it.

My question was the XMLRPC::Client class builds a lot of the
functionality you need without writing your own. XMLRPC utilizes the
NET::HTTP library; it builds the XML request and parses the response.

So my only question was, would it be a good idea to override MethodCall,
creating the needed request XML format and then override the parser to
consume the response OR should I just go ahead and roll my own.

I was looking for best practices; not only for my future self but also
for other developers down the road to maintain this.

Yes, it sucks that the API manufacturer did not follow the standards,
but I can't muck around with that I just need to find a solution.

If you have any input on the initial question, please post 'em.

Thanks again!

···

--
Posted via http://www.ruby-forum.com/.