微信公众号开发(二)被动回复文本消息
<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();
}
}
}
数据模型
后台处理请求
