.Net 微信公众帐号实现发送消息
2013-11-20 14:18
681 查看
1.接收请求,请求页面采用Post传值的方式 ,并接收读取页面传递的XML,官方XML格式:如下
2.Net 页面接收请求代码如下: HandleMsg 处理接收的XML,并把相关信息存放到自己创建的实体中_RequestMsgModel。
3.处理发送XML,_RequestMsgModel 存放需要发送的相关信息。
4.RequestMsgModel XML接收、发送的相关信息实体
<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>
2.Net 页面接收请求代码如下: HandleMsg 处理接收的XML,并把相关信息存放到自己创建的实体中_RequestMsgModel。
if (Request.HttpMethod.ToLower().Equals("post".ToLower())) { //--获取传入的内容 Stream contextStream = HttpContext.Current.Request.InputStream; byte[] b = new byte[contextStream.Length]; contextStream.Read(b, 0, (int)contextStream.Length); //--转换成字符串 string contextStr = System.Text.Encoding.UTF8.GetString(b); if (!string.IsNullOrEmpty(contextStr)) { //--操作XML new WeChatHandle().HandleMsg(contextStr); } } /// <summary> /// 获取请求信息的实体,并调用发送信息的方法 /// </summary> /// <param name="context"></param> public void HandleMsg(string context) { //--加载Xml XmlDocument doc = new XmlDocument(); doc.LoadXml(context); XmlElement rootElement = doc.DocumentElement; //--获取xml接点的值 _RequestMsgModel = new RequestMsgModel(); _RequestMsgModel.ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText; _RequestMsgModel.FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText; _RequestMsgModel.CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText; _RequestMsgModel.MsgType = rootElement.SelectSingleNode("MsgType").InnerText; switch (_RequestMsgModel.MsgType.ToLower()) { case "text": _RequestMsgModel.Content = rootElement.SelectSingleNode("Content").InnerText; break; case "image": //图片 _RequestMsgModel.PicUrl = rootElement.SelectSingleNode("PicUrl").InnerText; break; case "location": //位置 break; case "link": //链接 break; case "event": //事件推送 break; default: break; } }
3.处理发送XML,_RequestMsgModel 存放需要发送的相关信息。
private void ResponseMsg() { try { string resxml = ""; switch (_RequestMsgModel.MsgType) { case "text": //在这里执行一系列操作,从而实现自动回复内容. resxml = SendText(resxml, _RequestMsgModel); break; case "image": break; } System.Web.HttpContext.Current.Response.Write(resxml); } catch (Exception ex) { } } /// <summary> /// 发送文本 /// </summary> /// <param name="resxml"></param> /// <returns></returns> private string SendText(string resxml, RequestMsgModel __RequestMsgModel) { string responseXml = " <xml><ToUserName><![CDATA[{0}]]></ToUserName><FromUserName><![CDATA[{1}]]></FromUserName><CreateTime>{2}</CreateTime>" + "<MsgType><![CDATA[{3}]]></MsgType><Content><![CDATA[{4}]]></Content><MsgId>{5}</MsgId></xml>"; resxml = string.Format(responseXml, __RequestMsgModel.FromUserName, __RequestMsgModel.ToUserName, DateTime.Now.ToLongTimeString() , __RequestMsgModel.MsgType, __RequestMsgModel.Content, Int64.Parse("1000000")); return resxml; }
4.RequestMsgModel XML接收、发送的相关信息实体
/// <summary> /// RequestMsgModel 接收信息的实体 /// </summary> public class RequestMsgModel { private string toUserName = ""; /// <summary> /// 消息接收方微信号,一般为公众平台账号微信号 /// </summary> public string ToUserName { get { return toUserName; } set { toUserName = value; } } private string fromUserName = ""; /// <summary> /// 消息发送方微信号 /// </summary> public string FromUserName { get { return fromUserName; } set { fromUserName = value; } } private string createTime = ""; /// <summary> /// 创建时间 /// </summary> public string CreateTime { get { return createTime; } set { createTime = value; } } private string msgType = ""; /// <summary> /// 信息类型 地理位置:location,文本消息:text,消息类型:image /// </summary> public string MsgType { get { return msgType; } set { msgType = value; } } private string content = ""; /// <summary> /// 信息内容 /// </summary> public string Content { get { return content; } set { content = value; } } private string location_X = ""; /// <summary> /// 地理位置纬度 /// </summary> public string Location_X { get { return location_X; } set { location_X = value; } } private string location_Y = ""; /// <summary> /// 地理位置经度 /// </summary> public string Location_Y { get { return location_Y; } set { location_Y = value; } } private string scale = ""; /// <summary> /// 地图缩放大小 /// </summary> public string Scale { get { return scale; } set { scale = value; } } private string label = ""; /// <summary> /// 地理位置信息 /// </summary> public string Label { get { return label; } set { label = value; } } private string picUrl = ""; /// <summary> /// 图片链接,开发者可以用HTTP GET获取 /// </summary> public string PicUrl { get { return picUrl; } set { picUrl = value; } } /// <summary> /// 链接 /// </summary> private string title; public string Title { get { return title; } set { title = value; } } /// <summary> /// 链接 /// </summary> private string description; public string Description { get { return description; } set { description = value; } } /// <summary> /// 链接 /// </summary> private string url; public string Url { get { return url; } set { url = value; } } }
相关文章推荐
- 微信公共平台开发-(.net实现)4--发送图文消息
- 微信公共平台开发-(.net实现)3--发送文本消息
- 微信公众帐号开发教程第9篇-解析接口中的消息创建时间CreateTime
- 微信公众帐号开发教程第12篇-符号表情的发送(下)
- [004]微信公众帐号开发教程第4篇-消息及消息处理工具的封装
- 微信公众帐号开发教程第4篇-消息及消息处理工具的封装 (4)
- 微信公众帐号开发教程第10篇-解析接口中的消息创建时间CreateTime
- 微信公众帐号开发教程第11篇-符号表情的发送(上)
- 微信公共服务平台开发(.Net 的实现)3-------发送文本消息
- [034] 微信公众帐号开发教程第10篇-解析接口中的消息创建时间CreateTime .
- 微信公众帐号开发 - 消息处理工具的封装及消息回复
- 微信公众帐号开发教程第11篇-符号表情的发送(上)
- 微信公众帐号开发教程第13篇-图文消息全攻略
- [028] 微信公众帐号开发教程第4篇-消息及消息处理工具的封装
- [028] 微信公众帐号开发教程第4篇-消息及消息处理工具的封装
- 微信公众帐号开发教程第13篇-图文消息全攻略
- [034] 微信公众帐号开发教程第10篇-解析接口中的消息创建时间CreateTime
- 微信公众帐号开发教程第5篇-各种消息的接收与响应