Voyant quelque chose d'étrange entre un service Web Java et le client .NET qui lui parle. Nous envoyons un objet en arrière avec une propriété DateTime
dessus. Un peu comme ceci (généré à partir du WSDL):Webservice Java et client .NET supprimant des objets DateTime
[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;
}
}
}
Nous recevons les objets avec des dates très bien, mais quand nous les renvoyons au service Web, la propriété expirationDate
montrait comme null
. Nous avons examiné les données XML brutes que le serveur Java recevait et l'étiquette pour expirationDate
était pas là, un peu comme ceci:
<myClass><name>My Name</name></myClass>
(Ce n'est pas le XML exact, mais assez proche). J'ai vérifié et expirationDate
est définitivement défini sur le client .NET avant d'être envoyé. Le XSD pour le WSDL ne semble pas étrange:
<xs:element name="Expiration" type="xs:dateTime" minOccurs="0"/>
Nous utilisons le même type pour d'autres choses qui fonctionnent bien aussi. Du côté .NET, nous utilisons l'outil wsdl.exe
pour générer les classes et le code. Un autre pas que nous pourrions faire serait de voir le XML qui est généré par .NET avant d'appeler le service web, mais je ne sais pas comment faire cela. D'autres idées ou suggestions?
Fils d'un ... vous avez raison. Man, il a fallu trop de temps pour taper tout ça. Merci :). – swilliams