Hi all,
I’ve tried to search the mailing list, web, etc. and haven’t found
anything that seems to answer my question.
I have a WSDL for a web service written in Java, and I’m trying to
consume it in ruby using ActionWebService. I’ve created my API and some
struct classes. I’ve found the :namespace option to
ActionWebService::Client::Soap.new, but when I try to invoke an action
on the web service I get the following error:
: No Deserializer found to deserialize a
‘urn:rocis-ws-pra-service-IROCIS_PRA_WS:Rocis_ws_pra_service_ROCISSecurityBean’
using encoding style ‘http://schemas.xmlsoap.org/soap/encoding/’.
[java.lang.IllegalArgumentException] (SOAP::FaultError)
From what I gather, this means that my namespaces and element names
(i.e. class names) are not matching up with those declared in the WSDL
file. There are two problems:
-
The WSDL uses multiple namespaces (one for the SOAP action
declarations and one for the schema declarations for the input/output of
those actions, and some others), and I’m not sure which one I should be
sending to the :namespace option. I’ve tried all of them in turn. My
impression is that AWS expects the whole WSDL to use a single namespace
for declaration of actions, data, etc. -
The XML element that I’m trying to send is actually
“rocis_ws_pra_service_ROCISSecurityBean”, but in ruby, classes must be
capitalized so it’s getting sent that way.
One of both of these could be contributing to my problem. Is there a
way to declare an ActionWebService::Struct and tell it to use a specific
namespace and element name when it is marshalled? Or can I somehow
convince ruby to allow me to declare a class with a name that starts
with a lowercase letter?
I’m not sure I can send the WSDL file, but if more information is needed
I can try to duplicate the problem with a clean room WSDL.
TIA,
Paul Stadig