Anne wrote:
> Based on your current WSDL file (which looks correct), I would expect the
> client to send a SOAP message that looks like this:
> <e:body>
> <ns1:SubscriptionAttributes xmlns:ns1="urn-subscription-ns-type">
> <userId>nobody</userid>
> <password>passwd</password>
> </ns1:SubscriptionRequest>
> <e:body>
Hmmm... I was expecting the element just inside <body> to be <subscription> not <SubscriptionAttributes>. Axis generated Subscription and SubscriptionResponse classes from that WSDL, the complexTypes. (Not SubscriptionAttributes and SubscriptionResponse, the element names.)
In any case Axis complains unless it's <subscribe> which matches the method name. Anything else, and I get:
No such operation 'tagname'
I'm closer than I've ever been, but not quite there yet! I think it's the client code that's broken now. I don't know how to get it to make a <SubscriptionAttributes> or <subscription> tag around the userId and password tags.
I was hoping that by sending the SOAPAction, which now appears in the header and matches the SOAPAction in the WSDL file, that would tell Axis which service I was trying to call. Instead, Axis is picking the first tag inside <body> as the name of the method.
But I'm running on guesses and assumptions at this point. I'm sticking with the WSDL as-is since it's been blessed by Anne, and will try to adjust the wsdd and the client code to match.
The wsdl, wsdd, and client code are here:
http://www.public.asu.edu/~wsmoak/xml/
--
Wendy Smoak
Applications Systems Analyst, Sr.
Arizona State University, PA, IRM
