Rails ActionWebService and gSOAP interoperability problem



I’ve successfully created a Rails web service. I can connect to it
with an XML-RPC client, without any problems at all. However, when I
try to use a gSOAP application to connect to the web service, it
doesn’t work. The back trace that I get is at the end of this
message. From the back trace, it appears that the SOAP request is not
being recognized as a SOAP request, and is instead being routed to
the XML RPC protocol handler.

Inspecting discovery.rb shows that things fall over when decoding the
action pack request. If it tried SOAP first, that wouldn’t be a
problem. Or if it tried to grok XML RPC and failed, it should have
fallen back to SOAP?

def discover_web_service_request(action_pack_request)
(“web_service_protocols”) || []).each do |protocol|
protocol = protocol.create(self)
request = protocol.decode_action_pack_request
return request unless request.nil?

Ideally, I’d like to specify in environment.rb or in my controller
that Rails should use SOAP, and never XML RPC. Is that possible? What
about telling Rails to try SOAP first? Won’t that just bring problems
in the inverse situation?

I wish I didn’t have to use gSOAP, but I’m creating the client for an
embedded system and can’t run Java, a scripting language or anything
that’s not C. Eric Kidds XML-RPC library seems a little too
heavyweight due to its reliance on libwww. I’d appreciate some help.

– G.