xml-rpc.net肯定需要System.Datetime并转换为dateTime.iso8601。我遇到的一个问题是对dateTime.iso8601的各种解释。从你的XML模板中,你的日期时间输出被支持(20101117T09:42:00),你不会有同样的问题。我有一个非常严格的上游服务器,需要一些偏移量(例如+001),我不得不延长并将日期时间格式传递给xml-rpc.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,但这取决于你。
你确定xml-rpc.net不会自动以适当的格式序列化你的'DateTime'吗? – madd0
我将在下周对它进行测试并更新 – David