Title: RE: Need WSDL for this SOAP message
I realize that I made a mistake in my earlier postings.

I previously stated that the way you indicate in your WSDL file that you want a WRAPPED service is to make sure that the <wsdl:message> name is the same as the <wsdl:operation> name.

But in fact, what you have to do is make sure that the element name referenced in the <wsdl:part> is the same as the <wsdl:operation>.

So, the proper definitions in Wendy's WSDL should look like this:

<types>
  <schema
    targetNamespace="urn:subscription-ns-type"
    xmlns:typens="urn:subscription-ns-type"
    xmlns="http://www.w3.org/2001/XMLSchema">
   <complexType name="subscription">
     <sequence>
      <element maxOccurs="1" minOccurs="1" name="userId" type="xsd:string" />
      <element maxOccurs="1" minOccurs="1" name="password" type="xsd:string" />
    </sequence>
  </complexType>
  <element name="SubscriptionRequest" type="typens:subscription" />
   ...
 </schema>
</types>
  ...
<message name="SubscriptionInput">
  <part name="body" element="typens:SubscriptionRequest" />
 </message>
  ...
<portType name="SubscriptionServicePort">
   <operation name="SubscriptionRequest">
         <input message="tns:SubscriptionInput" />
         <output message="tns:SubscriptionOutput" />
  </operation>
</portType>
 
Sorry for leading you astray.
 
Anne


----- Original Message -----
From: Wendy Smoak
To: '[EMAIL PROTECTED]'
Sent: Friday, August 01, 2003 6:33 PM
Subject: RE: Need WSDL for this SOAP message


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

Reply via email to