C# response object contains null when calling Java Web Service
I've been sent the following wsdl. I generated the C# proxy using wsdl.exe and also created my c# web page. Using Fiddler I have looked at the SOAP response and it contains data. Any guidance on what modification is needed in order to get the C# program to accept the SOAP response. Please excuse the formatting of the wsdl I was uncertain as to which format to use for best results.
WSDL
<?xml version="1.0" encoding="UTF-8" ?>
<wsdl:definitions xmlns:tns="https://wwf.web.spiritaero.com/tot/moves" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="CreateMoveHistory" targetNamespace="https://wwf.web.spiritaero.com/tot/moves" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<wsdl:types>
<xsd:schema targetNamespace="https://wwf.web.spiritaero.com/tot/moves" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="CreateMoveHistoryResponse" type="tns:ReturnMessage" />
<xsd:element name="CreateMoveHistoryRequest" type="tns:CreateMoveHistoryContract" />
<xsd:complexType name="CreateMoveHistoryContract">
<xsd:sequence minOccurs="1" maxOccurs="1">
<xsd:element name="FromApplication" type="xsd:string" />
<xsd:element name="ActionName" type="xsd:string" />
<xsd:element name="OrderNumber" nillable="false" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="WorkCenter" nillable="false" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="Zone" nillable="false" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="Building" nillable="false" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="Floor" nillable="false" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="Post" nillable="false" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="SubCode" nillable="false" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="SubId" nillable="false" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="ScanDate" nillable="false" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="AntennaId" nillable="false" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="AntennaDescription" nillable="false" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="PartNumber" nillable="false" type="xsd:string" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CreateMoveHistoryFacade">
<xsd:sequence minOccurs="1" maxOccurs="1">
<xsd:element name="FromApplication" type="xsd:string" />
<xsd:element name="ActionName" type="xsd:string" />
<xsd:element name="OrderNumber" nillable="false" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="WorkCenter" nillable="false" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="Zone" nillable="false" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="Building" nillable="false" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="Floor" nillable="false" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="Post" nillable="false" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="SubCode" nillable="false" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="SubId" nillable="false" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:el开发者_StackOverflow社区ement name="ScanDate" nillable="false" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="AntennaId" nillable="false" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="AntennaDescription" nillable="false" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="PartNumber" nillable="false" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="ReturnCode" nillable="false" type="xsd:string" minOccurs="1" maxOccurs="1" />
<xsd:element name="ReturnMessage" nillable="false" type="xsd:string" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ReturnMessage">
<xsd:sequence minOccurs="1" maxOccurs="1">
<xsd:element name="Message" nillable="false" type="xsd:string" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message name="createMoveHistoryResponse">
<wsdl:part element="tns:CreateMoveHistoryResponse" name="createMoveHistoryResponse" />
</wsdl:message>
<wsdl:message name="createMoveHistoryRequest">
<wsdl:part element="tns:CreateMoveHistoryRequest" name="createMoveHistoryRequest" />
</wsdl:message>
<wsdl:portType name="CreateMoveHistoryPort">
<wsdl:operation name="createMoveHistory">
<wsdl:input message="tns:createMoveHistoryRequest" />
<wsdl:output message="tns:createMoveHistoryResponse" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="CreateMoveHistorySoap" type="tns:CreateMoveHistoryPort">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="createMoveHistory">
<soap:operation soapAction="https://wwf.web.spiritaero.com/tot/moves/CreateMoveHistory" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="CreateMoveHistory">
<wsdl:port binding="tns:CreateMoveHistorySoap" name="CreateMoveHistory">
<soap:address location="http://pc790503.corp.spiritaero.com:8080/tot/moves?action=CreateMoveHistory" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Fiddler
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header/>
<soapenv:Body>
<ReturnMessage xmlns="https://wwf.web.spiritaero.com/tot/moves">
<Message>Successful</Message>
</ReturnMessage>
</soapenv:Body>
</soapenv:Envelope>
C# Code Generated for response
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="https://wwf.web.spiritaero.com/tot/moves")]
public partial class CreateMoveHistoryResponse {
private string messageField;
/// <remarks/>
public string Message {
get {
return this.messageField;
}
set {
this.messageField = value;
}
}
}
C# code calling web service
CreateMoveHistory proxy;
CreateMoveHistoryRequest cmhRequest;
CreateMoveHistoryResponse msg;
....
msg = new CreateMoveHistoryResponse();
proxy = new CreateMoveHistory();
cmhRequest = new CreateMoveHistoryRequest();
cmhRequest.OrderNumber = "12345";
cmhRequest.Zone = "2";
cmhRequest.Building = "297F";
cmhRequest.Floor = "1";
cmhRequest.Post = "XX";
msg = proxy.createMoveHistory(cmhRequest);
Regards,
D. Fuller
If you use WebReferences, let check wsdl file to be sure targetNamespace and name space are same.
Hope this help!
Well, first of all, I would monitor your network traffic (HTTP) to ensure that something is being returned. If that is the case, I remember having problems with namespaces when calling Web Service from C# to Java and vice-versa. One of the sides had the namespace declaration, the other didn't, and one of the sides would think that it got no data because it was looking for something else.
This is a very generic explanation, but that was a long time ago. I remember that it was positively a cause of issues. You may have to use a different WS client to monitor a valid call, and then check what's different when you perform the call from the C# client.
I don't see a CreateMoveHistoryResponse
definition in your soap response... Instead I see a ReturnMessage
... and I believe there is the problem.
I see the <xsd:element name="CreateMoveHistoryResponse" type="tns:ReturnMessage" />
in your wsdl definition but I don't know why the wsdl.exe util don't generate the class of the correct type.
Hope this helps solving the issue...
精彩评论