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类创建一个变量。
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,但这取决于您。