Seeing something strange between a Java web service and the .NET client talking to it. We are sending an object back and forth with a DateTime
property on it. Sort of like this (generated from the WSDL):
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://ournamespace.com/")]
public partial class myClass {
private System.DateTime expirationDateField;
private string nameField;
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
public System.DateTime expirationDate {
get {
return this.expirationDateField;
}
set {
this.expirationDateField = value;
}
}
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
public string name {
get {
return this.nameField;
}
set {
this.nameField = value;
}
}
}
We are receiving the objects with dates just fine, but when we send them back to the Web Service, the expirationDate
property was showing up as null
. We looked at the raw XML that the Java server was receiving and the tag for expirationDate
wasn't there, sort of like this:
<myClass><name>My Name</name></myClass>
(That's not the exact XML, but close enough). I double checked and expirationDate
is definitely set on the .NET client before being sent. The XSD for the WSDL doesn't look strange:
<xs:element name="Expiration" type="xs:dateTime" minOccurs="0"/>
We are using the same type for other things, which work fine as well. On the .NET side, we're using the wsdl.exe
tool to generate the classes and code.
One more step we could take would be to see the XML that is generated by .NET before it calls the web service, but I don't know how to do that. Any other thoughts or suggestions?