How did you generate the WSDL?
(The WSDL and the response message don't match.)

For best result, generate a wrapped style service.

Anne

On 10/12/06, Philipp Stader <[EMAIL PROTECTED]> wrote:
Hi there,

lucky me has to write a .NET 2.0 client to consume Axis Web Services.
Right now all Web Services are deployed using Rpc/Encoded. Doing some
quick research it sounds like Document/Literal is the way to go. The
rpc/enc services get consumed quite ok, unfortunately .NET has an
issue talking to an Axis Document/Literal Service i created.
Interestingly enough it is able to work with an XFire Document/Literal
Web Service fine based on the very same (basic) Java classes. There is
a difference in the response to the requests by the two and apparently
the change is big enough to make .NET struggle.

Response by Axis:

<?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>
               <isbnReturn xmlns="http://webservice.psr.datamigration.ch";>
                       <author>Dan Diephouse</author>
                       <isbn>0123456789</isbn>

<publicationDate>2006-10-11T14:06:37.656Z</publicationDate>
                       <publicationDateString>Wed Oct 11 16:06:37 CEST 2006
                       </publicationDateString>
                       <title>Using XFire</title>
               </isbnReturn>
       </soapenv:Body>
</soapenv:Envelope>

Response by XFire:

<soap:Envelope
 xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";
 xmlns:xsd="http://www.w3.org/2001/XMLSchema";
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
       <soap:Body>
               <getBookout
xmlns="http://localhost:8080/xfire/services/BookController";>
                       <author xmlns="http://webservice.psr.datamigration.ch";>
                       Dan Diephouse</author>
                       <isbn
xmlns="http://webservice.psr.datamigration.ch";>0123456789</isbn>
                       <publicationDate
xmlns="http://webservice.psr.datamigration.ch";>
                       2006-10-11T16:08:01.484+02:00</publicationDate>
                       <publicationDateString
xmlns="http://webservice.psr.datamigration.ch";>
                       Wed Oct 11 16:08:01 CEST 2006</publicationDateString>
                       <title
xmlns="http://webservice.psr.datamigration.ch";>Using XFire</title>
               </getBookout>
       </soap:Body>
</soap:Envelope>

The XFire Response is happily accepted by the .NET 2.0 client using
the proxy class generated by Add Web Reference.

I have no clue how to bribe Axis to send a Doc/Literal answer that
.NET is able to parse (and if i really would want to). Also don't know
if XFire is doing something "wrong" just to please the .NET clients
out there. Another thing i tried was to take the wsdl generated by
XFire (since "it" works) to again generate wsdd (WSDL2Java) for Axis.
Didn't make a difference for my tests. (i know i should do WSDL first
but this isn't feasible for my current task). I also changed the
<parameter name="dotNetSoapEncFix" value="true"/> to false. Didn't
change anything. I also tried with the wrapped style but no go also.

All hints and pointers highly appreciated. I'll be more than happy to
document what it takes to make Axis Doc/Lit work with .NET 2.0 on the
wiki. Seems like all docs there target .NET 1.0/1.1

Phil

WSDLs, Deployment Descriptors to follow:

WSDL generated by Axis:

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions
targetNamespace="http://localhost:8080/axis/services/BookControllerDocLiteral";
xmlns:apachesoap="http://xml.apache.org/xml-soap";
xmlns:impl="http://localhost:8080/axis/services/BookControllerDocLiteral";
xmlns:intf="http://localhost:8080/axis/services/BookControllerDocLiteral";
xmlns:tns1="http://www.data-migration.ch/";
xmlns:tns2="http://webservice.psr.datamigration.ch";
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
<!--WSDL created by Apache Axis version: 1.4
Built on Apr 22, 2006 (06:55:48 PDT)-->
 <wsdl:types>
 <schema elementFormDefault="qualified"
targetNamespace="http://www.data-migration.ch/";
xmlns="http://www.w3.org/2001/XMLSchema";>
  <complexType name="Book">
   <sequence>
    <element name="author" nillable="true" type="xsd:string"/>
    <element name="isbn" nillable="true" type="xsd:string"/>
    <element name="publicationDate" nillable="true" type="xsd:dateTime"/>
    <element name="publicationDateString" nillable="true" type="xsd:string"/>
    <element name="title" nillable="true" type="xsd:string"/>
   </sequence>
  </complexType>
 </schema>
 <schema elementFormDefault="qualified"
targetNamespace="http://localhost:8080/axis/services/BookControllerDocLiteral";
xmlns="http://www.w3.org/2001/XMLSchema";>
  <import namespace="http://www.data-migration.ch/"/>
  <element name="getBooksReturn">
   <complexType>
    <sequence>
     <element maxOccurs="unbounded" minOccurs="0" name="item"
type="tns1:Book"/>
    </sequence>
   </complexType>
  </element>
  <element name="getBookByIndexReturn" type="tns1:Book"/>
  <element name="addBookReturn" type="xsd:boolean"/>
  <element name="getBookByISBNReturn" type="tns1:Book"/>
 </schema>
 <schema elementFormDefault="qualified"
targetNamespace="http://webservice.psr.datamigration.ch";
xmlns="http://www.w3.org/2001/XMLSchema";>
  <import namespace="http://www.data-migration.ch/"/>
  <element name="index" type="xsd:int"/>
  <element name="aBook" type="tns1:Book"/>
  <element name="isbn" type="xsd:string"/>
 </schema>
 </wsdl:types>
  <wsdl:message name="addBookResponse">
     <wsdl:part element="impl:addBookReturn" name="addBookReturn"/>
  </wsdl:message>
  <wsdl:message name="getBooksRequest">
  </wsdl:message>
  <wsdl:message name="addBookRequest">
     <wsdl:part element="tns2:aBook" name="aBook"/>
  </wsdl:message>
  <wsdl:message name="getBookByIndexResponse">
     <wsdl:part element="impl:getBookByIndexReturn"
name="getBookByIndexReturn"/>
  </wsdl:message>
  <wsdl:message name="getBookByISBNResponse">
     <wsdl:part element="impl:getBookByISBNReturn" name="getBookByISBNReturn"/>
  </wsdl:message>
  <wsdl:message name="getBooksResponse">
     <wsdl:part element="impl:getBooksReturn" name="getBooksReturn"/>
  </wsdl:message>
  <wsdl:message name="getBookByIndexRequest">
     <wsdl:part element="tns2:index" name="index"/>
  </wsdl:message>
  <wsdl:message name="getBookByISBNRequest">
     <wsdl:part element="tns2:isbn" name="isbn"/>
  </wsdl:message>
  <wsdl:portType name="BookController">
     <wsdl:operation name="getBooks">
        <wsdl:input message="impl:getBooksRequest" name="getBooksRequest"/>
        <wsdl:output message="impl:getBooksResponse" name="getBooksResponse"/>
     </wsdl:operation>
     <wsdl:operation name="getBookByIndex" parameterOrder="index">
        <wsdl:input message="impl:getBookByIndexRequest"
name="getBookByIndexRequest"/>
        <wsdl:output message="impl:getBookByIndexResponse"
name="getBookByIndexResponse"/>
     </wsdl:operation>
    <wsdl:operation name="addBook" parameterOrder="aBook">
        <wsdl:input message="impl:addBookRequest" name="addBookRequest"/>
        <wsdl:output message="impl:addBookResponse" name="addBookResponse"/>
     </wsdl:operation>
     <wsdl:operation name="getBookByISBN" parameterOrder="isbn">
        <wsdl:input message="impl:getBookByISBNRequest"
name="getBookByISBNRequest"/>
        <wsdl:output message="impl:getBookByISBNResponse"
name="getBookByISBNResponse"/>
     </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="BookControllerDocLiteralSoapBinding"
type="impl:BookController">
     <wsdlsoap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
     <wsdl:operation name="getBooks">
        <wsdlsoap:operation soapAction=""/>
        <wsdl:input name="getBooksRequest">
           <wsdlsoap:body use="literal"/>
        </wsdl:input>
        <wsdl:output name="getBooksResponse">
           <wsdlsoap:body use="literal"/>
        </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="getBookByIndex">
        <wsdlsoap:operation soapAction=""/>
        <wsdl:input name="getBookByIndexRequest">
           <wsdlsoap:body use="literal"/>
        </wsdl:input>
        <wsdl:output name="getBookByIndexResponse">
           <wsdlsoap:body use="literal"/>
        </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="addBook">
        <wsdlsoap:operation soapAction=""/>
        <wsdl:input name="addBookRequest">
           <wsdlsoap:body use="literal"/>
        </wsdl:input>
        <wsdl:output name="addBookResponse">
           <wsdlsoap:body use="literal"/>
        </wsdl:output>
     </wsdl:operation>
     <wsdl:operation name="getBookByISBN">
        <wsdlsoap:operation soapAction=""/>
        <wsdl:input name="getBookByISBNRequest">
           <wsdlsoap:body use="literal"/>
        </wsdl:input>
        <wsdl:output name="getBookByISBNResponse">
           <wsdlsoap:body use="literal"/>
        </wsdl:output>
     </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="BookControllerService">
     <wsdl:port binding="impl:BookControllerDocLiteralSoapBinding"
name="BookControllerDocLiteral">
        <wsdlsoap:address
location="http://localhost:8080/axis/services/BookControllerDocLiteral"/>
     </wsdl:port>
  </wsdl:service>
</wsdl:definitions>

Wsdl by XFire

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions
targetNamespace="http://localhost:8080/xfire/services/BookController";
xmlns:tns="http://localhost:8080/xfire/services/BookController";
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/";
xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
xmlns:ns1="http://webservice.psr.datamigration.ch";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";
xmlns:soapenc11="http://schemas.xmlsoap.org/soap/encoding/";
xmlns:soapenc12="http://www.w3.org/2003/05/soap-encoding";
xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
 <wsdl:types>
<xsd:schema attributeFormDefault="qualified"
elementFormDefault="qualified"
targetNamespace="http://webservice.psr.datamigration.ch";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
<xsd:complexType name="Book">
<xsd:sequence>
<xsd:element minOccurs="0" name="author" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="isbn" nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="publicationDate" type="xsd:dateTime"/>
<xsd:element minOccurs="0" name="publicationDateString"
nillable="true" type="xsd:string"/>
<xsd:element minOccurs="0" name="title" nillable="true" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ArrayOfBook">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="Book"
nillable="true" type="ns1:Book"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>

<xsd:schema attributeFormDefault="qualified"
elementFormDefault="qualified"
targetNamespace="http://localhost:8080/xfire/services/BookController";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
<xsd:element name="addBookin0" type="ns1:Book"/>
<xsd:element name="addBookout" type="xsd:boolean"/>
<xsd:element name="getBookByIndexin0" type="xsd:int"/>
<xsd:element name="getBookByIndexout" type="ns1:Book"/>
<xsd:element name="getBookByISBNin0" type="xsd:string"/>
<xsd:element name="getBookByISBNout" type="ns1:Book"/>
<xsd:element name="getBooksout" type="ns1:ArrayOfBook"/>
</xsd:schema>

 </wsdl:types>
 <wsdl:message name="addBookResponse">
   <wsdl:part name="addBookout" element="tns:addBookout"/>
 </wsdl:message>
 <wsdl:message name="getBooksResponse">
   <wsdl:part name="getBooksout" element="tns:getBooksout"/>
 </wsdl:message>
 <wsdl:message name="getBookByIndexResponse">
   <wsdl:part name="getBookByIndexout" element="tns:getBookByIndexout"/>
 </wsdl:message>
 <wsdl:message name="getBookByISBNResponse">
   <wsdl:part name="getBookByISBNout" element="tns:getBookByISBNout"/>
 </wsdl:message>
 <wsdl:message name="addBookRequest">
   <wsdl:part name="addBookin0" element="tns:addBookin0"/>
 </wsdl:message>
 <wsdl:message name="getBooksRequest">
 </wsdl:message>
 <wsdl:message name="getBookByISBNRequest">
   <wsdl:part name="getBookByISBNin0" element="tns:getBookByISBNin0"/>
 </wsdl:message>
 <wsdl:message name="getBookByIndexRequest">
   <wsdl:part name="getBookByIndexin0" element="tns:getBookByIndexin0"/>
 </wsdl:message>
 <wsdl:portType name="BookServiceDocumentLiteralPortType">
   <wsdl:operation name="addBook">
     <wsdl:input name="addBookRequest" message="tns:addBookRequest"/>
     <wsdl:output name="addBookResponse" message="tns:addBookResponse"/>
   </wsdl:operation>
   <wsdl:operation name="getBookByIndex">
     <wsdl:input name="getBookByIndexRequest"
message="tns:getBookByIndexRequest"/>
     <wsdl:output name="getBookByIndexResponse"
message="tns:getBookByIndexResponse"/>
   </wsdl:operation>
   <wsdl:operation name="getBookByISBN">
     <wsdl:input name="getBookByISBNRequest"
message="tns:getBookByISBNRequest"/>
     <wsdl:output name="getBookByISBNResponse"
message="tns:getBookByISBNResponse"/>
   </wsdl:operation>
   <wsdl:operation name="getBooks">
     <wsdl:input name="getBooksRequest" message="tns:getBooksRequest"/>
     <wsdl:output name="getBooksResponse" message="tns:getBooksResponse"/>
   </wsdl:operation>
 </wsdl:portType>
 <wsdl:binding name="BookServiceDocumentLiteralHttpBinding"
type="tns:BookServiceDocumentLiteralPortType">
   <wsdlsoap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
   <wsdl:operation name="addBook">
     <wsdlsoap:operation soapAction=""/>
     <wsdl:input name="addBookRequest">
       <wsdlsoap:body use="literal"/>
     </wsdl:input>
     <wsdl:output name="addBookResponse">
       <wsdlsoap:body use="literal"/>
     </wsdl:output>
   </wsdl:operation>
   <wsdl:operation name="getBookByIndex">
     <wsdlsoap:operation soapAction=""/>
     <wsdl:input name="getBookByIndexRequest">
       <wsdlsoap:body use="literal"/>
     </wsdl:input>
     <wsdl:output name="getBookByIndexResponse">
       <wsdlsoap:body use="literal"/>
     </wsdl:output>
   </wsdl:operation>
   <wsdl:operation name="getBookByISBN">
     <wsdlsoap:operation soapAction=""/>
     <wsdl:input name="getBookByISBNRequest">
       <wsdlsoap:body use="literal"/>
     </wsdl:input>
     <wsdl:output name="getBookByISBNResponse">
       <wsdlsoap:body use="literal"/>
     </wsdl:output>
   </wsdl:operation>
   <wsdl:operation name="getBooks">
     <wsdlsoap:operation soapAction=""/>
     <wsdl:input name="getBooksRequest">
       <wsdlsoap:body use="literal"/>
     </wsdl:input>
     <wsdl:output name="getBooksResponse">
       <wsdlsoap:body use="literal"/>
     </wsdl:output>
   </wsdl:operation>
 </wsdl:binding>
 <wsdl:service name="BookServiceDocumentLiteral">
   <wsdl:port name="BookServiceDocumentLiteralHttpPort"
binding="tns:BookServiceDocumentLiteralHttpBinding">
     <wsdlsoap:address
location="http://localhost:8080/xfire/services/BookServiceDocumentLiteral"/>
   </wsdl:port>
 </wsdl:service>
</wsdl:definitions>

Axis Deployment wsdd:

<deployment xmlns="http://xml.apache.org/axis/wsdd/";
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java";
xmlns:dmns="http://www.data-migration.ch/";>
   <service name="BookControllerDocLiteral" provider="java:RPC"
style="document" use="literal">
       <parameter name="className"
value="ch.datamigration.psr.webservice.BookController"/>
       <parameter name="allowedMethods" value="*"/>
       <beanMapping qname="dmns:Book"
type="java:ch.datamigration.psr.webservice.Book"/>
               </service>
</deployment>

XFire services.xml

<beans xmlns="http://xfire.codehaus.org/config/1.0";>
       <service>
   <name>BookServiceDocumentLiteral</name>
   <namespace>http://localhost:8080/xfire/services/BookController</namespace>
   <serviceClass>ch.datamigration.psr.webservice.IBookController</serviceClass>
   
<implementationClass>ch.datamigration.psr.webservice.BookController</implementationClass>
   <style>document</style>
   <use>literal</use>
 </service>
</beans>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to