0

这个问题的变体显然已经被问了几十次,但我需要的解决方案似乎非常难以捉摸。我希望这次是魅力!

我有一个 C# 应用程序,它通过 SOAP xml 与 Java Web 服务进行通信。应用程序使用 WSDL 导入服务没有问题。但是,xml 对象之一是 dateTime 类型。

<complexType name="Interaction">
    <sequence>
        <element name="ContactDate" type="dateTime" minOccurs="0" maxOccurs="1"/>
    </sequence>
</complexType>

我有一个从数据库中检索到的日期,如下所示:2013-07-10。我需要使用 UTC 格式将它放入 XML dateTime 对象:yyyy-MM-ddTHH:mm:ss.fffzzz

我可以轻松地将其转换为正确解析的字符串。那不是问题。当我尝试将数据加载到服务对象中时会出现此问题。我无法将数据作为字符串加载。它必须是 DateTime 对象,但 DateTime 拒绝使用 UTC 格式。

我认为这可能是序列化的问题。我认为在转换为要发送到 Web 服务的 xml 时无法正确序列化。这是此特定元素的序列化信息:

[System.Xml.Serialization.XmlElementAttribute(Order=2)]
public System.DateTime ContactDate {
    get {
        return this.contactDateField;
    }
    set {
        this.contactDateField = value;
        this.RaisePropertyChanged("ContactDate");
    }
}

关于我可能遗漏或做错的任何想法?任何帮助将不胜感激。谢谢!

4

2 回答 2

0

Z用来表示 UTC。这是你的问题吗?

您可以在此处阅读更多信息:http: //www.w3.org/TR/xmlschema-2/#dateTime-timezones

所以,2002-10-10T07:00:00Z是 2002 年 10 月 10 日 0700 UTC。

于 2013-07-12T17:53:50.940 回答
0

最后,这是我们为这个问题提出的非常不幸的答案。无论如何,我们无法确定强制 C# 正确序列化为日期时间格式。为了解决这个问题,我们最终更改了 Java Web 服务的 WSDL,将类型更改为字符串。一旦设置为字符串,其他一切显然都很容易。

complexType name="Interaction">
    <sequence>
        <element name="ContactDate" type="string" minOccurs="0" maxOccurs="1"/>
    </sequence>
</complexType>
于 2013-07-31T14:40:28.587 回答