You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Nuno Guerreiro <nv...@yahoo.com> on 2002/04/23 18:32:49 UTC

Please urgent! .Net client can't invoke Axis webservice

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&#xd;
	at java.lang.reflect.Method.invoke(Native
Method)&#xd;
	at
org.apache.axis.providers.java.RPCProvider.processMessage(Unknown
Source)&#xd;
	at
org.apache.axis.providers.java.JavaProvider.invoke(Unknown
Source)&#xd;
	at
org.apache.axis.strategies.InvocationStrategy.visit(Unknown
Source)&#xd;
	at org.apache.axis.SimpleChain.doVisiting(Unknown
Source)&#xd;
	at org.apache.axis.SimpleChain.invoke(Unknown
Source)&#xd;
	at org.apache.axis.server.AxisServer.invoke(Unknown
Source)&#xd;
	at
org.apache.axis.transport.http.AxisServlet.doPost(Unknown
Source)&#xd;
	at
javax.servlet.http.HttpServlet.service(HttpServlet.java:760)&#xd;
	at
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)&#xd;
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)&#xd;
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)&#xd;
	at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)&#xd;
	at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)&#xd;
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)&#xd;
	at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)&#xd;
	at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:201)&#xd;
	at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)&#xd;
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)&#xd;
	at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)&#xd;
	at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2344)&#xd;
	at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)&#xd;
	at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)&#xd;
	at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)&#xd;
	at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)&#xd;
	at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)&#xd;
	at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)&#xd;
	at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:462)&#xd;
	at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)&#xd;
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)&#xd;
	at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)&#xd;
	at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:163)&#xd;
	at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)&#xd;
	at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)&#xd;
	at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)&#xd;
	at
org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1011)&#xd;
	at
org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1106)&#xd;
	at java.lang.Thread.run(Thread.java:484)&#xd;
</ns2:stackTrace>
   </detail>
  </soap:Fault>
 </soap:Body>
</soap:Envelope>




__________________________________________________
Do You Yahoo!?
Yahoo! Games - play chess, backgammon, pool and more
http://games.yahoo.com/