2011-07-18 80 views
1

我需要上传数据到SAP通过Web服务,使用WCF在C#4.0(VS2010)。我已经能够连接并使用Web服务成功发布数据,但是我遇到了日期和时间的问题。序列化c#日期时间到Java时间和Java日期SAP Web服务

我有一个叫做MtrRdngDocERPRsltCrteReqRslt的类,有两个字段,分别叫ActualMeterReadingDate和ActualMeterReadingTime。当Visual Studio生成代理类时,它将这些对象转换为日期时间对象,但是我知道它们是web服务另一端(用JAVA实现)的日期和时间。

问题是,当我将datetime值传递给这些字段时,它们没有被序列化,并且在另一端没有被接收。

另外请注意,当我序列化由Web服务定义为日期时间的日期,这些工作完美。

我也使用下面的代码来序列化整个对象,并将其保存在xml本地,我也有同样的问题。


public void SerializeToXML(MeterReadingUploadWS2.MtrRdngDocERPRsltBulkCrteReqMsg bb, string path) 
{ 
System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(bb.GetType()); 

      var serializer = new System.Xml.Serialization.XmlSerializer(bb.GetType()); 

      using (var writer = System.Xml.XmlWriter.Create(path)) 
      {       
       serializer.Serialize(writer, bb); 
      } 
     } 
+0

当你将它序列化到xml时,你能向我们展示bb对象的样子吗? – Jethro

回答

1

我有一些麻烦这样做,前一段时间,我决定与长期性的工作,因为它是最接近通用互操作的方式来实现它,因为C#的DateTime和Java的Date对象是不同的东西来自不同的语言。

+0

所以你的意思是你将日期转换为Long? –

+0

我们选择更改web服务,以接受约定字符串格式的日期和时间。我认为它是最简单的。为了避免将来出现这样的问题,我将确保只有日期时间暴露在web服务中。 –

+0

是的,将其转换为长。这两种方法(使用长或字符串)无论如何适合您的需求:) 您可以标记答案为接受? – everton