当前位置:  开发笔记 > 编程语言 > 正文

Java Webservice和.NET客户端删除DateTime对象

如何解决《JavaWebservice和.NET客户端删除DateTime对象》经验,为你挑选了1个好方法。

看到Java Web服务和与其通信的.NET客户端之间有些奇怪的事情。我们正在来回发送带有DateTime属性的对象。像这样(从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;
        }
    }
}

我们收到的对象的日期很好,但是当我们将它们发送回Web服务时,该expirationDate属性显示为null。我们查看了Java服务器正在接收的原始XML,并且该XML的标签expirationDate不存在,就像这样:

My Name

(这不是确切的XML,但足够接近)。我经过仔细检查,expirationDate并确定在发送之前在.NET客户端上进行了设置。WSDL的XSD看起来并不奇怪:


我们在其他事情上使用相同的类型,也可以正常工作。在.NET方面,我们正在使用该wsdl.exe工具生成类和代码。

我们可以采取的另一步骤是在调用Web服务之前查看.NET生成的XML,但我不知道该怎么做。还有其他想法或建议吗?



1> John Saunder..:

当值类型在架构中为可选时,WSDL.EXE会为该值生成一个属性,并为一个bool属性来指示该值是否存在。您应该具有一个ExpirationSpecified属性,当您要发送到期日期时,需要将其设置为true;否则,请设置为false

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有