ActionWebService and namespaces

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:

  1. 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.

  2. 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

ActionWebService::Client::Soap is not a general-purpose client. If you
need
a interoperability with other SOAP frameworks, you are better of using
soap4r directly.


Kent

http://www.datanoise.com

Thanks for the reply. I was able to get it to work with soap4r, though
I had a bit of trouble figuring out how to use the wsdl2ruby script.

Paul Stadig

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs