I have a Web Service in Axis (latest version) which can't be called by a .Net client (VB-based). I believe the problem is with the way href's are built in .Net. Axis uses multiRef, but .Net doesn't.
Another problem I've noticed: the WSDL file that gets generated from the service url with the ?WSDL is incorrect. It states that a StringHolder type is returned (from http://holders.rpc.xml.javax namespace), but what gets returned is a xs:string type. As a consequence, I had to supply the .Net client with the wsdl file I've manually created (and which was used to feed the Axis wsdl2java tool). Included below are the wsdl file, a sample good request/response from the JUnit test class and the bad request/response from .Net. Many thanks, Nuno Guerreiro ---------------------------------------- WSDL ---------------------------------------- <?xml version="1.0" encoding="UTF-8"?> <definitions targetNamespace="http://www.cidadebcp.pt/webservices/services/getDDAccounts" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:typ="http://www.cidadebcp.pt/webservices/schemas/types" xmlns:intf="http://www.cidadebcp.pt/webservices/services/getDDAccounts"> <types> <xsd:schema targetNamespace="http://www.cidadebcp.pt/webservices/schemas/types" xmlns="http://www.cidadebcp.pt/webservices/schemas/types"> <xsd:complexType name="DeviceType"> <xsd:sequence> <xsd:element name="id" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:schema> </types> <message name="getDDAccountsRequest"> <part name="in" type="xsd:string"/> <part name="device" type="typ:DeviceType"/> </message> <message name="getDDAccountsResponse"> <part name="out" type="xsd:string"/> <part name="out2" type="xsd:string"/> </message> <portType name="getDDAccountsPortType"> <operation name="getDDAccounts"> <input message="intf:getDDAccountsRequest"/> <output message="intf:getDDAccountsResponse"/> </operation> </portType> <binding name="getDDAccountsSoapBinding" type="intf:getDDAccountsPortType"> <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="getDDAccounts"> <wsdlsoap:operation soapAction="" style="rpc"/> <input> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.cidadebcp.pt/webservices/services/getDDAccounts" use="encoded"/> </input> <output> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.cidadebcp.pt/webservices/services/getDDAccounts" use="encoded"/> </output> </operation> </binding> <service name="getDDAccountsService"> <port name="getDDAccounts" binding="intf:getDDAccountsSoapBinding"> <wsdlsoap:address location="http://golduck:8080/webservices/services/getDDAccounts"/> </port> </service> </definitions> ----------------------------------- sample good/request from JUnit ----------------------------------- ---------------------------- request ---------------------------- POST /webservices/services/getDDAccounts HTTP/1.0 Content-Length: 740 Host: golduck Content-Type: text/xml; charset=utf-8 SOAPAction: "" <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <ns1:getDDAccounts xmlns:ns1="http://www.cidadebcp.pt/webservices/services/getDDAccounts"> <in xsi:type="xsd:string"></in> <device href="#id0"/> </ns1:getDDAccounts> <multiRef id="id0" SOAP-ENC:root="0" xsi:type="ns2:DeviceType" xmlns:ns2="http://www.cidadebcp.pt/webservices/schemas/types"> <id xsi:nil="true"/> </multiRef> </SOAP-ENV:Body> </SOAP-ENV:Envelope> ---------------------------- response ---------------------------- HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: 547 Date: Tue, 23 Apr 2002 16:09:49 GMT Server: Apache Tomcat/4.0.1 (HTTP/1.1 Connector) <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <ns1:getDDAccountsResponse SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://www.cidadebcp.pt/webservices/services/getDDAccounts"> <out xsi:type="xsd:string"></out> <out2 xsi:type="xsd:string"></out2> </ns1:getDDAccountsResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> ---------------------------------------- bad request/response from .Net client ---------------------------------------- ---------------------- request ---------------------- POST /webservices/services/getDDAccounts HTTP/1.1 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 1.0.3705.209) Content-Type: text/xml; charset=utf-8 SOAPAction: "" Content-Length: 785 Expect: 100-continue Connection: Keep-Alive Host: golduck <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://www.cidadebcp.pt/webservices/services/getDDAccounts" xmlns:types="http://www.cidadebcp.pt/webservices/services/getDDAccounts/encodedTypes" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><tns:getDDAccounts><in xsi:type="xsd:string">olá</in><device href="#id1" /></tns:getDDAccounts><q1:DeviceType id="id1" xsi:type="q1:DeviceType" xmlns:q1="http://www.cidadebcp.pt/webservices/schemas/types"><id xsi:type="xsd:string">56375637</id></q1:DeviceType></soap:Body></soap:Envelope> ------------------------ response ------------------------ HTTP/1.1 100 Continue HTTP/1.1 500 Internal Server Error Content-Type: text/xml; charset=utf-8 Content-Length: 3965 Date: Tue, 23 Apr 2002 16:13:28 GMT Server: Apache Tomcat/4.0.1 (HTTP/1.1 Connector) <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://www.cidadebcp.pt/webservices/services/getDDAccounts" xmlns:types="http://www.cidadebcp.pt/webservices/services/getDDAccounts/encodedTypes" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <soap:Fault> <faultcode xmlns:ns1="http://xml.apache.org/axis/">ns1:Server.userException</faultcode> <faultstring>java.lang.IllegalArgumentException: argument type mismatch</faultstring> <detail> <ns2:stackTrace xmlns:ns2="http://xml.apache.org/axis/">java.lang.IllegalArgumentException: argument type mismatch
 at java.lang.reflect.Method.invoke(Native Method)
 at org.apache.axis.providers.java.RPCProvider.processMessage(Unknown Source)
 at org.apache.axis.providers.java.JavaProvider.invoke(Unknown Source)
 at org.apache.axis.strategies.InvocationStrategy.visit(Unknown Source)
 at org.apache.axis.SimpleChain.doVisiting(Unknown Source)
 at org.apache.axis.SimpleChain.invoke(Unknown Source)
 at org.apache.axis.server.AxisServer.invoke(Unknown Source)
 at org.apache.axis.transport.http.AxisServlet.doPost(Unknown Source)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
 at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:201)
 at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
 at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2344)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
 at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
 at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
 at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
 at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
 at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:462)
 at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:163)
 at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
 at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1011)
 at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1106)
 at java.lang.Thread.run(Thread.java:484)
 </ns2:stackTrace> </detail> </soap:Fault> </soap:Body> </soap:Envelope> __________________________________________________ Do You Yahoo!? Yahoo! Games - play chess, backgammon, pool and more http://games.yahoo.com/
