微信公众号开发(二)被动回复文本消息
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[this is a test]]></Content> <MsgId>1234567890123456</MsgId> </xml>
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>12345678</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[你好]]></Content> </xml>
具体代码实现:
工具类
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Web; using System.Xml.Serialization; namespace Test.WeChat { public static class Utils { /// <summary> /// 将类的实例序列化为xml字符串 /// </summary> /// <param name="instance"></param> /// <returns></returns> public static string SerializeToXml<T>(T instance) { //序列化 string xmlString = String.Empty; //去掉默认命名空间 XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); ns.Add("", ""); XmlSerializer xmlSerializer = new XmlSerializer(instance.GetType()); MemoryStream stream = new MemoryStream(); xmlSerializer.Serialize(stream, instance, ns); byte[] buf = stream.ToArray(); xmlString = System.Text.Encoding.UTF8.GetString(buf); stream.Close(); return xmlString; } /// <summary> /// 将xml字符串反序列化为类的实例 /// </summary> /// <param name="xmlString"></param> /// <returns></returns> public static T DeserializeFromXml<T>(string xmlString) { //反序列化 T obj = default(T); XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); byte[] buf = System.Text.Encoding.UTF8.GetBytes(xmlString); MemoryStream stream = new MemoryStream(buf); obj = (T)xmlSerializer.Deserialize(stream); stream.Close(); return obj; } /// <summary> /// 时间戳转时间格式 /// </summary> /// <param name="time">数字</param> /// <param name="secondsOrMilliseconds">1:秒级别,非1:毫秒级别</param> /// <returns></returns> public static DateTime ConvertLongToDateTime(long time, int secondsOrMilliseconds = 1) { TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)); DateTime datetime = DateTime.MinValue; DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc)); if (secondsOrMilliseconds == 1) datetime = startTime.AddSeconds(time); else datetime = startTime.AddMilliseconds(time); return datetime; } /// <summary> /// 时间转时间戳格式 /// </summary> /// <param name="datetime">日期</param> /// <param name="secondsOrMilliseconds">1:秒级别,非1:毫秒级别</param> /// <returns></returns> public static long ConvertDateTimeToLong(DateTime datetime, int secondsOrMilliseconds = 1) { DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc)); TimeSpan ts = (datetime - startTime); if (secondsOrMilliseconds == 1) return (long)ts.TotalSeconds; else return (long)ts.TotalMilliseconds; } /// <summary> /// 获取当前时间戳,10位,秒 /// </summary> /// <returns></returns> public static string GetTimeStamp() { TimeSpan ts = DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0); return Convert.ToInt64(ts.TotalSeconds).ToString(); } /// <summary> /// 获取时间戳,13位,毫秒 /// </summary> /// <returns></returns> public static string GetTimeStamps() { TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0); return Convert.ToInt64(ts.TotalMilliseconds).ToString(); } } }
数据模型
后台处理请求