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" ?>
Of course the call2 method of class XMLRPC::Client uses this
create().methodCall(method, *args); which generates this request:
<?xml version="1.0" ?>
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?
I think you probably won’t have any luck using an XML-RPC client to talk
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.
So you wouldn’t suggest overriding methodCall to produce my own flavor
of XML wrapper? Instead using an HTTP library and maybe nokogiri for
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
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. Is it your believe that if you are conversing with a
server in XML, then that means that you are conforming to the XMLRPC
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.