微信开发中,首先遇到的问题就是处理怎样接收和响应用户消息 , 本文将向大家介绍一下方法和关键的代码。

本文使用的接口库是  :https://github.com/chendong152/Weixin_api_.net 很感谢
TD的作者



ASP.NET开发的  接收微信消息和响应用户消息代码例如以下:

文件名称 :  v.ashx

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Xml;
  6. using Td.Weixin.Public.Common;
  7. using Td.Weixin.Public.Message;
  8.  
  9. namespace WeiWeiXin.Net6
  10. {
  11. /// <summary>
  12. /// v 的摘要说明
  13. /// </summary>
  14. public class v : IHttpHandler
  15. {
  16.  
  17. /// <summary>
  18. /// 开发人员 验证 模块
  19. /// </summary>
  20. /// <param name="context"></param>
  21. public bool ProcessRequest2(HttpContext context)
  22. {
  23. context.Response.ContentType = "text/plain";
  24. // context.Response.Write("Hello World");
  25. try
  26. {
  27. string echoStr = context.Request["echoStr"];
  28. if (!string.IsNullOrEmpty(echoStr))
  29. {
  30. context.Response.Write(echoStr);
  31. return true;
  32. }
  33. else
  34. {
  35. // context.Response.Write("end");
  36. // context.Response.End();
  37. }
  38. }
  39. catch (Exception e)
  40. {
  41. // context.Response.Write("end" + e.Message + e.ToString());
  42. // context.Response.End();
  43. }
  44. return false;
  45. }
  46.  
  47. public void ProcessRequest(HttpContext context)
  48. {
  49. context.Response.ContentType = "text/plain";
  50. //假设 是 验证 则 直接 退出
  51. if (ProcessRequest2(context))
  52. return;
  53.  
  54. context.Response.ContentType = "text/plain";
  55. var m = ReceiveMessage.ParseFromContext();
  56.  
  57. if (m == null)
  58. return;
  59.  
  60. //被关注
  61. if (m.MsgType == MessageType.Event && m.InnerToXmlText().IndexOf("subscribe") >= 0)
  62. {
  63. //发送AIML请求
  64. var r2 = m.GetTextResponse();
  65. string result = "[微笑]欢迎关注";
  66. r2.Data = (TextMsgData)result;
  67. r2.Response();
  68. return;
  69. }
  70.  
  71. //数据解析
  72. XmlDocument xmlDoc = new XmlDocument();
  73. xmlDoc.LoadXml(m.ToXmlText());//"<xml><description><![CDATA[木子屋:http://www.mzwu.com/]]></description></xml>");
  74.  
  75. //菜单 或者 用户文本输入
  76. if (m.MsgType == MessageType.Text || (m.MsgType == MessageType.Event && m.InnerToXmlText().IndexOf("subscribe") < 0))
  77. {
  78. //读取
  79. string rr = "";
  80.  
  81. if (m.MsgType == MessageType.Text)
  82. {
  83. rr = xmlDoc.SelectSingleNode("//Content").FirstChild.InnerText.ToLower().Trim();
  84. }
  85. else
  86. {
  87. rr = xmlDoc.SelectSingleNode("//EventKey").FirstChild.InnerText.ToLower().Trim();
  88. }
  89.  
  90. //发送
  91. var r2 = m.GetTextResponse();
  92. string result = "欢迎使用,您发送的是:" +rr;//
  93. r2.Data = (TextMsgData)result;
  94. r2.Response();
  95. return;
  96. }
  97. }
  98.  
  99. public bool IsReusable
  100. {
  101. get
  102. {
  103. return false;
  104. }
  105. }
  106. }
  107. }

这段代码中具有开发人员验证的功能,同一时候也考虑到了 由菜单发送到平台的文本的接收和响应。

最后 广告一下 : 完整的 微微信.NET 能够在这里找到  udoo123.taobao.com

微信.NET 微信开发 自己主动内容回复 ASP.NET C#代码的更多相关文章

  1. Java微信公众平台开发(八)--多媒体消息回复之音乐

    我们上一篇写了关注出发图片的回复.想着在发送一次音乐,最后基于回复消息分类情况下,实现一个简单的只能话回复.先附一张大致效果图. 下面我们进入代码阶段. (一)修改消息转发器MsgDispatcher ...

  2. Java微信公众平台开发(八)--多媒体消息回复

    转自:http://www.cuiyongzhi.com/post/46.html 之前我们在做消息回复的时候我们对回复的消息简单做了分类,前面也有讲述如何回复[普通消息类型消息],这里将讲述多媒体消 ...

  3. Java微信公众平台开发(七)--多媒体消息回复之图片回复

    之前我们在做消息回复的时候我们对回复的消息简单做了分类,前面也有讲述如何回复[普通消息类型消息],这里将讲述多媒体消息的回复方法,[多媒体消息]包含回复图片消息/回复语音消息/回复视频消息/回复音乐消 ...

  4. 微信公众号开发C#系列-7、消息管理-接收事件推送

    1.概述 在微信用户和公众号产生交互的过程中,用户的某些操作会使得微信服务器通过事件推送的形式通知到开发者在开发者中心处设置的服务器地址,从而开发者可以获取到该信息.其中,某些事件推送在发生后,是允许 ...

  5. 微信公众平台开发教程--方培工作室,PHP语言版本

    准备工作 微信公众平台的注册 介绍如何注册一个微信公众账号. 入门教程 微信公众平台开发入门教程 内容:1.申请SAE作为服务器; 2.启用开发模式; 3.微信公众平台PHP SDK; 4.接收发送消 ...

  6. 微信公众号开发之网页中及时获取当前用户Openid及注意事项

    目录 (一)微信公众号开发之VS远程调试 (二)微信公众号开发之基础梳理 (三)微信公众号开发之自动消息回复和自定义菜单 (四)微信公众号开发之网页授权获取用户基本信息 (五)微信公众号开发之网页中及 ...

  7. 微信公众号开发及时获取当前用户Openid及注意事项

    目录 (一)微信公众号开发之VS远程调试 (二)微信公众号开发之基础梳理 (三)微信公众号开发之自动消息回复和自定义菜单 (四)微信公众号开发之网页授权获取用户基本信息 (五)微信公众号开发之网页中及 ...

  8. 微信小程序开发简易计算器改进版

    微信小程序开发计算器有多种方法,但是大部分代码比较复杂.不容易理解.本案例进行了改进,主要是组件bindtap属性绑定的自定义函数clickBtn(),采用了switch语句,使得代码结构更加清晰,学 ...

  9. 微信公众号开发被动回复用户消息,回复内容Content使用了"\n"换行符还是没有换行

    使用语言和框架:本人后端开发使用的Python的DRF(Django REST framework)框架 需求:在微信公众号开发时,需要实现自动回复,即被关注回复.收到消息回复.关键词回复 发现问题: ...

随机推荐

  1. IndexReader和IndexWriter的生命周期

    http://youyang-java.iteye.com/blog/1731205 对于IndexReader而言,反复使用 IndexReader .open打开会有很大的开销,所以一般在整个程序 ...

  2. 李洪强漫谈iOS开发[C语言-017]-printf函数

  3. unity博文搜集

    一.综合篇 1. 脚本 unity3d脚本编程基础 2.Mecanim 使用Mecanim实现连击 3. 数学图形学 U3D需要用到的数学基础  2 4. shader 猫都能学会的Unity3D S ...

  4. SPRING IN ACTION 第4版笔记-第三章ADVANCING WIRING-009-用SPEL给bean运行时注入依赖值

    1.When injecting properties and constructor arguments on beans that are created via component-scanni ...

  5. 电脑是如何识别USB 3.0 U盘的

    USB 3.0电缆如图1所示. 图1 USB 3.0的接口比USB 2.0接口多了5根线,这5根线分别是Shield.SSRX+/-和SSTX+/-,即是屏蔽地.超速发送差分对和接受差分对. 因此一个 ...

  6. delphi中formatFloat代码初探(在qt下实现floatformat的函数)

    由于项目需要,需要在qt下实现floatformat的函数.之前写过一个,但是写得不好.决定重新写一个,参考delphi xe2下的实现.把xe2下的相关代码都看了一遍,xe2的代码思路在这里贴出来. ...

  7. [Hadoop源码解读](一)MapReduce篇之InputFormat

    平时我们写MapReduce程序的时候,在设置输入格式的时候,总会调用形如job.setInputFormatClass(KeyValueTextInputFormat.class);来保证输入文件按 ...

  8. 数据库 一致性读&&当前读

    今天小伙伴问了一个sql的问题: update t set status=2 where id in(select id from t where status=1) 这个sql,在并发的情况下,会不 ...

  9. 让VS2010支持HTML5

    一.升级Microsoft Visual Studio 2010到Microsoft Visual Studio 2010 sp1 1.升级方法一这里直接给传送门了 Microsoft Visual ...

  10. sharepoint 2010 隐藏左边菜单left menu样式脚本

    转:http://www.cfanz.cn/?c=article&a=read&id=60536 在v4.master中,<head></head>标签中,加入 ...