上一篇说到配置和验证《C#微信开发之旅--准备阶段》
下面来实现一下简单的信息回复。
也就是接收XML,返回XML
根据请求的信息类型,创建了一个信息请求类:
//微信请求类
public class RequestXML
{
private String toUserName = String.Empty;
///
/// 公众号
///
public String ToUserName
{
get { return toUserName; }
set { toUserName = value; }
}
private String fromUserName = "";
///
/// 发送方微信号
///
public String FromUserName
{
get { return fromUserName; }
set { fromUserName = value; }
}
private String createTime = String.Empty;
///
/// 创建时间
///
public String CreateTime
{
get { return createTime; }
set { createTime = value; }
}
private String msgType = String.Empty;
///
/// 信息类型 地理位置:location,文本消息:text,消息类型:image
///
public String MsgType
{
get { return msgType; }
set { msgType = value; }
}
private String content = String.Empty;
///
/// 信息内容
///
public String Content
{
get { return content; }
set { content = value; }
}
private String location_X = String.Empty;
///
/// 地理位置纬度
///
public String Location_X
{
get { return location_X; }
set { location_X = value; }
}
private String location_Y = String.Empty;
///
/// 地理位置经度
///
public String Location_Y
{
get { return location_Y; }
set { location_Y = value; }
}
private String scale = String.Empty;
///
/// 地图缩放大小
///
public String Scale
{
get { return scale; }
set { scale = value; }
}
private String mapInfo = String.Empty;
///
/// 地理位置信息
///
public String MapInfo
{
get { return mapInfo; }
set { mapInfo = value; }
}
private String picUrl = String.Empty;
///
/// 图片链接
///
public String PicUrl
{
get { return picUrl; }
set { picUrl = value; }
}
private String _event;
///
/// 事件类型
///
public String Event
{
get { return _event; }
set { _event = value; }
}
private String eventKey;
///
/// 事件key
///
public String EventKey
{
get { return eventKey; }
set { eventKey = value; }
}
}
1.我们接收XML信息,然后读取其中的信息保存到RequestXML中,然后根据请求类型,返回对应的信息
////// 接收信息 /// /// public void Handle(String postStr) { XmlDocument doc = new XmlDocument(); doc.LoadXml(postStr); XmlElement rootElement = doc.DocumentElement; XmlNode MsgType = rootElement.SelectSingleNode("MsgType"); RequestXML requestXML = new RequestXML(); requestXML.ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText; requestXML.FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText; requestXML.CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText; requestXML.MsgType = MsgType.InnerText; if (requestXML.MsgType == "text") { requestXML.Content = rootElement.SelectSingleNode("Content").InnerText; } else if (requestXML.MsgType == "location") { requestXML.Location_X = rootElement.SelectSingleNode("Location_X").InnerText; requestXML.Location_Y = rootElement.SelectSingleNode("Location_Y").InnerText; requestXML.Scale = rootElement.SelectSingleNode("Scale").InnerText; requestXML.MapInfo = rootElement.SelectSingleNode("Label").InnerText; } else if (requestXML.MsgType == "image") { requestXML.PicUrl = rootElement.SelectSingleNode("PicUrl").InnerText; } else if (requestXML.MsgType == "event")//事件 { requestXML.Event = rootElement.SelectSingleNode("Event").InnerText; if (requestXML.Event == "CLICK")//点击事件 { requestXML.EventKey = rootElement.SelectSingleNode("EventKey").InnerText; } else if (requestXML.Event == "subscribe")//订阅 { } } ResponseMsg(requestXML); }
上面已经处理好了请求信息,现在就要对请求作出回复,回复的信息格式也是XML。
现在就做一个简单的文本回复,就没有弄一个回复类。
////// 回复消息 /// /// private void ResponseMsg(RequestXML requestXML) { String responseContent = String.Empty; if (requestXML.MsgType == "text")//文本 { responseContent = FormatTextXML(requestXML.FromUserName, requestXML.ToUserName, "基本回复rn" + DateTime.Now.ToString() + "rn" + requestXML.FromUserName); } HttpContext.Current.Response.ContentEncoding = Encoding.UTF8; HttpContext.Current.Response.Write(responseContent); }
上面就是一个简单的文本回复,如果请求的信息是文本的话,我会返回一句话。FormatTextXML就是把封装要返回的XML。
因为我们在开发文档中可以看见,返回的文本信息的话,格式为:
12345678
所以FormatTextXML就这样写了:
////// 返回格式化文本XML内容 /// /// /// /// ///private String FormatTextXML(String fromUserName, String toUserName, String content) { return " "; } " + ConvertDateTimeInt(DateTime.Now) + " 1
这样一个简单的文本回复就弄好了! 你发送文本信息给公众号,就能得到一个回复了。
一点积累一点点!




