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]
