C# xml-rpc <dateTime.iso8601>

本文关键字:gt iso8601 dateTime lt xml-rpc | 更新日期: 2023-09-27 18:16:33

所以我必须点击webservice (xml-rpc),我使用xml-rpc.net库来做到这一点。我必须传递的参数之一必须是在。net中没有这样的东西作为变量的类型。目前我只是写XML和张贴,这不是一个令人满意的解决方案。

日期时间的xml格式:

</param>
<param>
  <value>
    <dateTime.iso8601>20101117T09:42:00</dateTime.iso8601>
  </value>
</param>
<param>

有人有什么聪明的想法吗,有人说给dateTime类创建一个变量。

C# xml-rpc <dateTime.iso8601>

xmlrpc.net当然需要一个系统。Datetime并转换为Datetime .iso8601。我遇到的一个问题是dateTime.iso8601的各种解释。从您的xml模板中,您的日期时间输出是受支持的(20101117T09:42:00),您不会遇到同样的问题。我有一个非常严格的上游服务器,想要一些偏移(例如+001),我必须扩展和传递一个日期时间格式到xmlrpc.net。

编辑

是的,我修改了代码来实现新的DateTimeFormat。我下载了源代码,并做了以下修改(我希望它有更好的托管,有人可以提供修改)。

有一个XmlRpcSerializer.cs,它是将类型序列化为xml-rpc格式的地方。您需要的方法自然是……

void Serialize(
      XmlWriter xtw,
      Object o,
      MappingActions mappingActions,
      List<object> nestedObjs)

在这个方法的某个地方,检查XmlRpcType.tDateTime:

else if (xType == XmlRpcType.tDateTime)
        {
          DateTime dt = (DateTime)o;
          //The following line is what you need, if a custom DateTime format was supplied, to override the default
          string sdt = dt.ToString((string.IsNullOrEmpty(DateTimeFormat) ? "yyyyMMdd'T'HH':'mm':'ss" : DateTimeFormat),
          DateTimeFormatInfo.InvariantInfo);
          WriteFullElementString(xtw, "dateTime.iso8601", sdt);
        }

故事的其余部分是如何将自定义日期时间格式传递给XmlRpcSerializer类。你可以给这个类添加一个属性来实现它。可以使用XmlRpcFormatSettings,但这取决于您。