G
Guest
I have a simple c# app that calls a Java (AXIS) web service to perform some
operations. The call works fine (the java code fires and the operations are
executed), but the response is always null. Other applications (besides the
c# ones) are able to execute the web service and get the proper response.
I put a SOAP sniffer on the call and the response was:
193
<?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><synchronousInvokeResponse
xmlns="http://DefaultNamespace"><processID xsi:type="xsd:long"
xmlns="">205</processID></synchronousInvokeResponse></soapenv:Body></soapenv:Envelope>
0
</Message>
I'm not sure where the 193, 0 and </Message> came from but I suspect that it
was caused by some chunking issues.
The response header is as follows:
<HTTPHeaders>
<content-type>text/xml;charset=utf-8</content-type>
<transfer-encoding>chunked</transfer-encoding>
<date>Wed, 26 Apr 2006 19:07:26 GMT</date>
<server>Apache-Coyote/1.1</server>
</HTTPHeaders>
Any thoughts on how I can get the c# application to properly recognize the
response? Unfortunately I can't change the Java web service.
The Java web service WSDL is as follows:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://adobe.com/workflow/services"
xmlns:apachesoap="http://xml.apache.org/xml-soap"
xmlns:impl="http://adobe.com/workflow/services"
xmlns:intf="http://adobe.com/workflow/services"
xmlns:ref="http://ws-i.org/profiles/basic/1.1/xsd"
xmlns:tns1="http://DefaultNamespace"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!--
Generated by Adobe Workflow Server v7.0
getAccountData
-->
<wsdl:types>
<schema elementFormDefault="qualified"
targetNamespace="http://DefaultNamespace"
xmlns="http://www.w3.org/2001/XMLSchema">
<element name="invoke">
<complexType>
<sequence>
<element name="accountnumber" type="xsd:int"/>
</sequence>
</complexType>
</element>
<element name="invokeResponse">
<complexType>
<sequence>
<element name="processID" type="xsd:long"/>
</sequence>
</complexType>
</element>
<element name="synchronousInvoke">
<complexType>
<sequence>
<element name="accountnumber" type="xsd:int"/>
</sequence>
</complexType>
</element>
<element name="synchronousInvokeResponse">
<complexType>
<sequence>
<element name="processID" type="xsd:long"/>
</sequence>
</complexType>
</element>
<element name="getResults">
<complexType>
<sequence>
<element name="processID" type="xsd:long"/>
</sequence>
</complexType>
</element>
<element name="getResultsResponse">
<complexType>
<sequence>
<element name="processID" type="xsd:long"/>
</sequence>
</complexType>
</element>
<element name="getStatus">
<complexType>
<sequence>
<element name="processID" type="xsd:long"/>
</sequence>
</complexType>
</element>
<element name="getStatusResponse">
<complexType>
<sequence>
<element name="processID" type="xsd:long"/>
<element name="statusString" type="xsd:string"/>
<element name="statusCode" type="xsd:int"/>
</sequence>
</complexType>
</element>
</schema>
</wsdl:types>
<wsdl:message name="getStatusResponse">
<wsdlart element="tns1:getStatusResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="getResultsRequest">
<wsdlart element="tns1:getResults" name="parameters"/>
</wsdl:message>
<wsdl:message name="synchronousInvokeResponse">
<wsdlart element="tns1:synchronousInvokeResponse"
name="parameters"/>
</wsdl:message>
<wsdl:message name="getResultsResponse">
<wsdlart element="tns1:getResultsResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="getStatusRequest">
<wsdlart element="tns1:getStatus" name="parameters"/>
</wsdl:message>
<wsdl:message name="invokeResponse">
<wsdlart element="tns1:invokeResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="synchronousInvokeRequest">
<wsdlart element="tns1:synchronousInvoke" name="parameters"/>
</wsdl:message>
<wsdl:message name="invokeRequest">
<wsdlart element="tns1:invoke" name="parameters"/>
</wsdl:message>
<wsdlortType name="getXMLData">
<wsdlperation name="invoke">
<wsdl:input message="impl:invokeRequest" name="invokeRequest"/>
<wsdlutput message="impl:invokeResponse"
name="invokeResponse"/>
</wsdlperation>
<wsdlperation name="synchronousInvoke">
<wsdl:input message="impl:synchronousInvokeRequest"
name="synchronousInvokeRequest"/>
<wsdlutput message="impl:synchronousInvokeResponse"
name="synchronousInvokeResponse"/>
</wsdlperation>
<wsdlperation name="getResults">
<wsdl:input message="impl:getResultsRequest"
name="getResultsRequest"/>
<wsdlutput message="impl:getResultsResponse"
name="getResultsResponse"/>
</wsdlperation>
<wsdlperation name="getStatus">
<wsdl:input message="impl:getStatusRequest"
name="getStatusRequest"/>
<wsdlutput message="impl:getStatusResponse"
name="getStatusResponse"/>
</wsdlperation>
</wsdlortType>
<wsdl:binding name="getXMLDataSoapBinding" type="impl:getXMLData">
<wsdlsoap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdlperation name="invoke">
<wsdlsoapperation soapAction=""/>
<wsdl:input name="invokeRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdlutput name="invokeResponse">
<wsdlsoap:body use="literal"/>
</wsdlutput>
</wsdlperation>
<wsdlperation name="synchronousInvoke">
<wsdlsoapperation soapAction=""/>
<wsdl:input name="synchronousInvokeRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdlutput name="synchronousInvokeResponse">
<wsdlsoap:body use="literal"/>
</wsdlutput>
</wsdlperation>
<wsdlperation name="getResults">
<wsdlsoapperation soapAction=""/>
<wsdl:input name="getResultsRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdlutput name="getResultsResponse">
<wsdlsoap:body use="literal"/>
</wsdlutput>
</wsdlperation>
<wsdlperation name="getStatus">
<wsdlsoapperation soapAction=""/>
<wsdl:input name="getStatusRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdlutput name="getStatusResponse">
<wsdlsoap:body use="literal"/>
</wsdlutput>
</wsdlperation>
</wsdl:binding>
<wsdl:service name="getXMLDataService">
<wsdlort binding="impl:getXMLDataSoapBinding" name="getXMLData">
<wsdlsoap:address
location="http://localhost:8080/services/getXMLData"/>
</wsdlort>
</wsdl:service>
</wsdl:definitions>
operations. The call works fine (the java code fires and the operations are
executed), but the response is always null. Other applications (besides the
c# ones) are able to execute the web service and get the proper response.
I put a SOAP sniffer on the call and the response was:
193
<?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><synchronousInvokeResponse
xmlns="http://DefaultNamespace"><processID xsi:type="xsd:long"
xmlns="">205</processID></synchronousInvokeResponse></soapenv:Body></soapenv:Envelope>
0
</Message>
I'm not sure where the 193, 0 and </Message> came from but I suspect that it
was caused by some chunking issues.
The response header is as follows:
<HTTPHeaders>
<content-type>text/xml;charset=utf-8</content-type>
<transfer-encoding>chunked</transfer-encoding>
<date>Wed, 26 Apr 2006 19:07:26 GMT</date>
<server>Apache-Coyote/1.1</server>
</HTTPHeaders>
Any thoughts on how I can get the c# application to properly recognize the
response? Unfortunately I can't change the Java web service.
The Java web service WSDL is as follows:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://adobe.com/workflow/services"
xmlns:apachesoap="http://xml.apache.org/xml-soap"
xmlns:impl="http://adobe.com/workflow/services"
xmlns:intf="http://adobe.com/workflow/services"
xmlns:ref="http://ws-i.org/profiles/basic/1.1/xsd"
xmlns:tns1="http://DefaultNamespace"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!--
Generated by Adobe Workflow Server v7.0
getAccountData
-->
<wsdl:types>
<schema elementFormDefault="qualified"
targetNamespace="http://DefaultNamespace"
xmlns="http://www.w3.org/2001/XMLSchema">
<element name="invoke">
<complexType>
<sequence>
<element name="accountnumber" type="xsd:int"/>
</sequence>
</complexType>
</element>
<element name="invokeResponse">
<complexType>
<sequence>
<element name="processID" type="xsd:long"/>
</sequence>
</complexType>
</element>
<element name="synchronousInvoke">
<complexType>
<sequence>
<element name="accountnumber" type="xsd:int"/>
</sequence>
</complexType>
</element>
<element name="synchronousInvokeResponse">
<complexType>
<sequence>
<element name="processID" type="xsd:long"/>
</sequence>
</complexType>
</element>
<element name="getResults">
<complexType>
<sequence>
<element name="processID" type="xsd:long"/>
</sequence>
</complexType>
</element>
<element name="getResultsResponse">
<complexType>
<sequence>
<element name="processID" type="xsd:long"/>
</sequence>
</complexType>
</element>
<element name="getStatus">
<complexType>
<sequence>
<element name="processID" type="xsd:long"/>
</sequence>
</complexType>
</element>
<element name="getStatusResponse">
<complexType>
<sequence>
<element name="processID" type="xsd:long"/>
<element name="statusString" type="xsd:string"/>
<element name="statusCode" type="xsd:int"/>
</sequence>
</complexType>
</element>
</schema>
</wsdl:types>
<wsdl:message name="getStatusResponse">
<wsdlart element="tns1:getStatusResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="getResultsRequest">
<wsdlart element="tns1:getResults" name="parameters"/>
</wsdl:message>
<wsdl:message name="synchronousInvokeResponse">
<wsdlart element="tns1:synchronousInvokeResponse"
name="parameters"/>
</wsdl:message>
<wsdl:message name="getResultsResponse">
<wsdlart element="tns1:getResultsResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="getStatusRequest">
<wsdlart element="tns1:getStatus" name="parameters"/>
</wsdl:message>
<wsdl:message name="invokeResponse">
<wsdlart element="tns1:invokeResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="synchronousInvokeRequest">
<wsdlart element="tns1:synchronousInvoke" name="parameters"/>
</wsdl:message>
<wsdl:message name="invokeRequest">
<wsdlart element="tns1:invoke" name="parameters"/>
</wsdl:message>
<wsdlortType name="getXMLData">
<wsdlperation name="invoke">
<wsdl:input message="impl:invokeRequest" name="invokeRequest"/>
<wsdlutput message="impl:invokeResponse"
name="invokeResponse"/>
</wsdlperation>
<wsdlperation name="synchronousInvoke">
<wsdl:input message="impl:synchronousInvokeRequest"
name="synchronousInvokeRequest"/>
<wsdlutput message="impl:synchronousInvokeResponse"
name="synchronousInvokeResponse"/>
</wsdlperation>
<wsdlperation name="getResults">
<wsdl:input message="impl:getResultsRequest"
name="getResultsRequest"/>
<wsdlutput message="impl:getResultsResponse"
name="getResultsResponse"/>
</wsdlperation>
<wsdlperation name="getStatus">
<wsdl:input message="impl:getStatusRequest"
name="getStatusRequest"/>
<wsdlutput message="impl:getStatusResponse"
name="getStatusResponse"/>
</wsdlperation>
</wsdlortType>
<wsdl:binding name="getXMLDataSoapBinding" type="impl:getXMLData">
<wsdlsoap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdlperation name="invoke">
<wsdlsoapperation soapAction=""/>
<wsdl:input name="invokeRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdlutput name="invokeResponse">
<wsdlsoap:body use="literal"/>
</wsdlutput>
</wsdlperation>
<wsdlperation name="synchronousInvoke">
<wsdlsoapperation soapAction=""/>
<wsdl:input name="synchronousInvokeRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdlutput name="synchronousInvokeResponse">
<wsdlsoap:body use="literal"/>
</wsdlutput>
</wsdlperation>
<wsdlperation name="getResults">
<wsdlsoapperation soapAction=""/>
<wsdl:input name="getResultsRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdlutput name="getResultsResponse">
<wsdlsoap:body use="literal"/>
</wsdlutput>
</wsdlperation>
<wsdlperation name="getStatus">
<wsdlsoapperation soapAction=""/>
<wsdl:input name="getStatusRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdlutput name="getStatusResponse">
<wsdlsoap:body use="literal"/>
</wsdlutput>
</wsdlperation>
</wsdl:binding>
<wsdl:service name="getXMLDataService">
<wsdlort binding="impl:getXMLDataSoapBinding" name="getXMLData">
<wsdlsoap:address
location="http://localhost:8080/services/getXMLData"/>
</wsdlort>
</wsdl:service>
</wsdl:definitions>