微信开发asp.net

互联网 17-2-23

最近在接触微信开发,也有在看php的代码,不过最后还是使用c#语言了;

后台新建了index.ashx文件,这样速度比较快;

首先顶部引用了

一个是为了实现接收xml文件流,一个是为了后面对xml文件的处理;

public class index : IHttpHandler {        private readonly string Token = "xxxx";//与微信公众账号后台的Token设置保持一致,区分大小写。            public void ProcessRequest (HttpContext context) {          context.Response.ContentType = "text/plain";            string signature = context.Request["signature"];          string timestamp = context.Request["timestamp"];          string nonce = context.Request["nonce"];          string echostr = context.Request["echostr"];            if (context.Request.HttpMethod == "GET")          {              if (CheckSign(signature, timestamp, nonce))              {                  context.Response.Output.Write(echostr);              }          }          else          {              //post method - 当有用户想公众账号发送消息时触发,写事件          }            context.Response.End();      }

首先设置好Token,接收各种参数,请求方式是以get的方式发送;

这里主要呢是CheckSign()函数;

public bool CheckSign(string signature, string timestamp, string nonce)      {          string[] strs = new string[] { Token, timestamp, nonce };          Array.Sort(strs);//排序          string strNew = string.Join("", strs);//连接成字符串          strNew = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strNew, "SHA1");//加密          if (signature == strNew.ToLower())              return true;          return false;      }

其实这里的意识就是接收到A/B/C/D,E为自定义,B/C/E生成F,与A比较,相等返回输出D;

string xmlFromWeChat = new StreamReader(context.Request.InputStream).ReadToEnd();//读取XML流              XmlDocument xmldocument = new XmlDocument();              xmldocument.LoadXml(xmlFromWeChat);加载字符串              string fromContent = xmldocument.GetElementsByTagName("Content").Item(0).InnerText;              string fromMsgType = xmldocument.GetElementsByTagName("MsgType").Item(0).InnerText;

写的不好指出哈!!

这样我们就可以对接收到的数据进行判断,做出相应的操作,最主要的还是要熟悉接口;

下面就一个例子说明一下,可能没有抽象的很好:

public string receiveText(string xmlFromWeChat)      {          XmlDocument xmlText = new XmlDocument();          xmlText.LoadXml(xmlFromWeChat);          string content;          string xmlStr;          string keyword = xmlText.GetElementsByTagName("Content").Item(0).InnerText.Trim();                           content = "欢迎关注xxx!";                 string[] defArray = { xmlText.GetElementsByTagName("FromUserName").Item(0).InnerText,                                 xmlText.GetElementsByTagName("ToUserName").Item(0).InnerText,                                 ConvertDateTimeInt(DateTime.Now).ToString(),                                content};                 xmlStr = transmitText(defArray);                           }                              return xmlStr;      }
public string transmitText(string[] xmlArray)      {          string xmlstring = @"<xml>                              <ToUserName><![CDATA[{0}]]></ToUserName>                              <FromUserName><![CDATA[{1}]]></FromUserName>                              <CreateTime>{2}</CreateTime>                              <MsgType><![CDATA[text]]></MsgType>                              <Content><![CDATA[{3}]]></Content>                              </xml>";          string xmlstr = string.Format(xmlstring, xmlArray);          return xmlstr;      }

这样子就完成的一个简单的回复了;

更多微信开发asp.net相关文章请关注PHP中文网!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: 微信开发
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:C#微信开发之旅:基础类之HttpClientHelper(更新:SSL安全策略)

相关资讯