微信简单Demo

新建一个WxHandler.ashx

   public class WxHandler : IHttpHandler
    {
        public static string Msg;
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            if (context.Request.HttpMethod.ToLower().Equals("get"))
            {
                context.Response.Write(Msg);
                //校验
                VaildateUrl();
            }
            else
            {
                //接受并相应
                HandleMsg();
            }
        }

        private void HandleMsg()
        {
            HttpContext context = HttpContext.Current;
            Stream xmlStream = context.Request.InputStream;
            XmlDocument doc = new XmlDocument();
            doc.Load(xmlStream);
            XmlElement rootElement = doc.DocumentElement;
            string toUserName = rootElement.SelectSingleNode("ToUserName").InnerText;
            string fromUserName = rootElement.SelectSingleNode("FromUserName").InnerText;
            string msgType = rootElement.SelectSingleNode("MsgType").InnerText;
            string content = rootElement.SelectSingleNode("Content").InnerText;
            //Msg = string.Format("{0}--{1}--{2}---{3}",toUserName,fromUserName,msgType,content);
            string xmlMsg = "<xml>" +
                            "<ToUserName><![CDATA[" + fromUserName + "]]></ToUserName>" +
                            "<FromUserName><![CDATA[" + toUserName + "]]></FromUserName>" +
                            "<CreateTime>" + GetCreateTime() + "</CreateTime>" +
                            "<MsgType><![CDATA[text]]></MsgType>" +
                            "<Content><![CDATA[亲爱的你给我说的是:" + content + ",你说这是什么意思呢?]]></Content></xml>";
            Msg = xmlMsg;
            context.Response.Write(xmlMsg);
        }
        private int GetCreateTime()
        {
            DateTime dateStart = new DateTime(1970, 1, 1, 8, 0, 0);
            return (int)(DateTime.Now - dateStart).TotalSeconds;
        }
        private void VaildateUrl()
        {
            HttpContext context = HttpContext.Current;
            string signature = context.Request["signature"];
            string timestamp = context.Request["timestamp"];
            string nonce = context.Request["nonce"];
            string echostr = context.Request["echostr"];
            string token = "huang";
            string[] temp1 = { token, timestamp, nonce };
            Array.Sort(temp1);
            string temp2 = string.Join("", temp1);
            string temp3 = FormsAuthentication.HashPasswordForStoringInConfigFile(temp2, "SHA1");
            if (temp3.ToLower().Equals(signature))
            {
                context.Response.Write(echostr);
            }
            else
            {
                context.Response.Write("浏览器打开方式!!");
            }

        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
时间: 2025-01-02 06:45:58

微信简单Demo的相关文章

Ext简单demo示例

1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 5 <titl

Unity3d 背景、音效 播放 简单demo

仅实现功能,AudioListener在MainCamera中 using UnityEngine; using System.Collections; using System.Collections.Generic; public class MusicManger : MonoBehaviour { AudioSource _backMusicSource = null; AudioSource _SoundSource = null; //public string musicName

Android SQLite最简单demo实现(增删查改)

本来不太想写这篇博客的,但是看到网上的关于android数据库操作的博文都讲得很详细,对于像我这样的新手入门了解SQLite的基本操作有一定难度,所以我参考了网上的一些博客文章,并自己亲自摸索了一遍,希望写出这么一篇博文来记录SQLite的最基本操作,同时也希望能够对android的新手们有些帮助. 参考博客:http://www.20864.com/201247/274.html 这里只是一个示范性的demo,并没实现什么具体功能,只实现了对数据库的增删查改操作. 以下是实现demo的步骤:

FORM验证简单demo

详解稍后加入. 项目结构如图: web.xml <?xml version="1.0" encoding="UTF-8" ?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocat

APS.NET MVC4生成解析二维码简单Demo

一.视图 @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Index</title> <script src="~/Scripts/jquery-1.8.2.min.js"></scri

android JNI 简单demo(2)之JNI demo 编写

android JNI 简单demo(2)之JNI demo 编写 一.搭建Cygwin 环境:http://blog.csdn.net/androidolblog/article/details/25559013 二.JNI 基本要素: 1.编写 含native 方法的java文件. 2.把该文件用javah 生成 Cygwin 编译库时要用到的头文件,既*.h 文件. 3.编写*.c 文件,在*.c文件中,实现 *.h 中的方法. 4.编写mk文件. 5.配置NDK环境. 6.用Cygwin

二维码简单Demo

二维码简单Demo 一.视图 @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Index</title> <script src="~/Scripts/jquery-1.8.2.min.js">

Highcharts+Ajax+Json+Sturts2实现的图形异步实时刷新的一个简单demo

原文:Highcharts+Ajax+Json+Sturts2实现的图形异步实时刷新的一个简单demo 源代码下载地址:http://www.zuidaima.com/share/1550463370480640.htm 此功能可以用在后端对数据的实时抓取,前端动态更新时使用,可以根据数据的变化进行实时刷新,基于之前我上传的一个图形demo改制.如有意见建议,疑问,大家可以留言一起探讨. 源代码截图:

Spring的简单demo

---------------------------------------- 开发一个Spring的简单Demo,具体的步骤如下: 1.构造一个maven项目 2.在maven项目的pom.xml文件中添加spring的依赖包 3.开发一个接口Api 和两个实现类ApiOne,ApiTwo 4.新增Spring的配置文件applicationContext.xml 5.编写测试类Client 下面开始具体每个步骤的描述: 步骤1:构造一个maven项目 springTest 步骤2:在mav