微信公众号开发(二)被动回复文本消息

<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();
        }
    }
}

数据模型

后台处理请求

经验分享 程序员 微信小程序 职场和发展