Hi,

As you comment below, it is suspicious that the generated code is looking
for the "result" element, as defined in the WSDL, but the SOAP response
doesn't contain such an element.  It is probably worth checking your server
has been correctly deployed from the same version of the WSDL.

Also, I notice from your WSDL that you're actually trying to use an
rpc/literal web service.    Was that your intention?
(snippet from WSDL binding)
>    <soapbind:binding
>     transport="http://schemas.xmlsoap.org/soap/http/";
>     style="rpc"/>

If, as you have said in the past, you have control over the server, I'd
recommend you try with doc/literal.

Regards,
Adrian
_______________________________________
Adrian Dick ([EMAIL PROTECTED])
WebSphere MQ and ESB Development
Tel: +44-(0)-1962-819212
Notes: Adrian Dick/UK/[EMAIL PROTECTED]

Hernan Silberman <[EMAIL PROTECTED]> wrote on 13/04/2005 02:19:27:

>
> More information:  It looks like my WSDL-generated Axis cpp client does
the
> following:
>
> I call LevelsServicePortType::getFxLevelsForShot()
> which calls SoapDeserializer.getCmplxObj()
> which calls Axis_DeSerialize_tLevelCollection
> which does a SoapDeserializer.getCmplxArry()
> which calls Axis_Create_tLevelCollection() with a size of 0
>
> hope this helps.
> thanks again...
> Hernan
>
>
> On Tue, 12 Apr 2005, Hernan Silberman wrote:
>
> >
> > > Given you have complete control of the server I would suggest you
> > > re-deploy your web service as doc/literal.
> > > doc/literal is supported in AxisCPP far better due to our commitment
to
> > > being ws-i compliant.
> >
> > Thanks for the tip, I've discovered ws-i.org and I'm doing my bestto
follow
> > their guidelines as well.
> >
> > I'm doing doc/literal for my service now and I've turned off
> multipart encoding
> > on my Axis Java service.  I know I'm getting close, but something
> is still wrong
> > with my WSDL.  My test client is getting a NULL response from the
generated
> > stub:
> >
> > int main()
> > {
> >     try {
> >       LevelsServicePortType* theService =
> >    new LevelsServicePortType("http://localhost:
> 8080/nile/services/LevelsServicePort");
> >       tLevelCollection* thePtr = theService->getFxLevelsForShot();
> >       if( NULL==thePtr )
> >       {
> >      cout << "thePtr is null" << endl;
> >       }
> >     } catch(AxisException& e) {
> > // etc.
> >
> > Here's the new SOAP response:
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> > <soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
> > xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
> >   <soapenv:Body>
> >      <getFxLevelsForShotResponse xmlns="http://www.dreamworks.
> com/LevelService/">
> >         <ns1:LevelCollectionResponse xmlns:ns1="http://www.
> dreamworks.com/nile/schema/">
> >            <ns1:Element>
> >               <ns1:Prod>MAD</ns1:Prod>
> >               <ns1:Name>Dust</ns1:Name>
> >            </ns1:Element>
> >            <ns1:Element>
> >               <ns1:Prod>MAD</ns1:Prod>
> >               <ns1:Name>Fire</ns1:Name>
> >            </ns1:Element>
> >         </ns1:LevelCollectionResponse>
> >      </getFxLevelsForShotResponse>
> >   </soapenv:Body>
> > </soapenv:Envelope>
> >
> > This generated call to getCmplxObject below returns null.  I don't see
the
> > string literal "result" in the SOAP response above, though it isin
> the WSDL.
> > Seems suspicious.
> >
> > if(AXIS_SUCCESS == m_pCall->checkMessage("getFxLevelsForShotResponse",
"
> http://www.dreamworks.com/LevelService/";))
> > {
> >   pReturn =
> >   (tLevelCollection*)m_pCall->getCmplxObject((void*)
> >   Axis_DeSerialize_tLevelCollection,
> >   (void*) Axis_Create_tLevelCollection,
> >   (void*) Axis_Delete_tLevelCollection,
> >   "result", 0);
> > }
> >
> > I appreciate any help in finding my error.
> > thanks again,
> > Hernan
> >
> > Here's the WSDL the cpp stub is generated from:
> >
> > <?xml version="1.0"?>
> >
> > <definitions xmlns="http://schemas.xmlsoap.org/wsdl/";
> >  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
> >  xmlns:soapbind="http://schemas.xmlsoap.org/wsdl/soap/";
> >  xmlns:http="http://schemas.xmlsoap.org/wsdl/http/";
> >  xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> >  xmlns:tns="http://www.dreamworks.com/LevelService/";
> >  targetNamespace="http://www.dreamworks.com/LevelService/";
> >  xmlns:typens="http://www.dreamworks.com/nile/schema/";>
> >
> >  <types>
> >    <xsd:schema targetNamespace="http://www.dreamworks.com/nile/schema/";
> >        xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> >        elementFormDefault="qualified"
> >        attributeFormDefault="unqualified">
> >
> >       <xsd:element name="LevelCollectionResponse" type="typens:
> tLevelCollection"/>
> >       <xsd:complexType name="tLevelCollection">
> >          <xsd:sequence>
> >             <xsd:element name="Element" type="typens:tLevel"
> minOccurs="0" maxOccurs="unbounded"/>
> >          </xsd:sequence>
> >       </xsd:complexType>
> >
> >       <xsd:complexType name="tLevel">
> >         <xsd:sequence>
> >            <xsd:element name="Prod" type="xsd:string"/>
> >            <xsd:element name="Name" type="xsd:string"/>
> >         </xsd:sequence>
> >       </xsd:complexType>
> >
> >    </xsd:schema>
> >  </types>
> >
> >  <!-- message declns -->
> >  <message name="getFxLevelsForShotRequest"/>
> >  <message name="getFxLevelsForShotResponse">
> >    <part name="result" element="typens:LevelCollectionResponse"/>
> >  </message>
> >
> >  <!-- port type declns -->
> >  <portType name="LevelsServicePortType">
> >    <operation name="getFxLevelsForShot">
> >      <input message="tns:getFxLevelsForShotRequest"/>
> >      <output message="tns:getFxLevelsForShotResponse"/>
> >    </operation>
> >  </portType>
> >
> >  <!-- binding declns -->
> >  <binding name="LevelsXMLServiceSOAPBinding" type="tns:
> LevelsServicePortType">
> >    <soapbind:binding
> >     transport="http://schemas.xmlsoap.org/soap/http/";
> >     style="rpc"/>
> >    <operation name="getFxLevelsForShot">
> >      <input name="getFxLevelsForShotRequest">
> >        <soapbind:body use="literal" namespace="http://www.
> dreamworks.com/LevelService/"/>
> >      </input>
> >      <output name="getFxLevelsForShotResponse">
> >        <soapbind:body use="literal" namespace="http://www.
> dreamworks.com/LevelService/"/>
> >      </output>
> >    </operation>
> >  </binding>
> >
> >  <service name="LevelsXMLService">
> >     <port name="LevelsServicePort" binding="tns:
> LevelsXMLServiceSOAPBinding">
> >       <soap:address location="http://localhost:
> 8080/nile/services/LevelsService"/>
> >     </port>
> >  </service>
> >
> > </definitions>
> >
> >
>
> --
> Hernan Silberman
> PDI/Dreamworks
> ext.29162 / 650-562-9162 / cell 415-810-5809
> text pager: [EMAIL PROTECTED]
>

Reply via email to