惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
爱范儿
爱范儿
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
月光博客
月光博客
腾讯CDC
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园_首页
量子位
博客园 - 聂微东
Jina AI
Jina AI
小众软件
小众软件
The Cloudflare Blog
有赞技术团队
有赞技术团队
V
V2EX
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
大猫的无限游戏
大猫的无限游戏
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
阮一峰的网络日志
阮一峰的网络日志
B
Blog
MongoDB | Blog
MongoDB | Blog
L
LangChain Blog
宝玉的分享
宝玉的分享
C
Check Point Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
IT之家
IT之家
N
Netflix TechBlog - Medium
I
InfoQ
J
Java Code Geeks
S
SegmentFault 最新的问题
V
Visual Studio Blog
Microsoft Security Blog
Microsoft Security Blog
博客园 - 叶小钗
D
DataBreaches.Net
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
B
Blog RSS Feed
S
Schneier on Security
Webroot Blog
Webroot Blog
P
Proofpoint News Feed
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Threatpost
Project Zero
Project Zero
Scott Helme
Scott Helme
C
CERT Recently Published Vulnerability Notes
P
Privacy International News Feed
T
The Exploit Database - CXSecurity.com
D
Darknet – Hacking Tools, Hacker News & Cyber Security

博客园 - 麦舒

网站访问速度的优化 ERP 订单打印的优化 页面 SEO 信息的优化 一个网站首页重构小记 广告播放软件的开发 项目分享九:客户端的异常处理 项目分享八:基于按钮点击事件的弹窗 项目分享七:客户端防止表单重复提交 项目分享六:图片的延迟加载 项目分享五:H5图片压缩与上传 项目分享四:购物车页面的更新 项目分享三:页面之间的传值 项目分享二:APP 小红点中数字的处理 项目分享一:在项目中使用 IScroll 所碰到的那些坑 微信开发——通过授权获取用户的基本信息 千呼万唤岂出来,写款软件不容易——Visual Entity 2.0 发布 代码重构之 —— 一堆if、esle 逻辑的处理 ALinq Dynamic 使用指南——慨述(上) ALinq Dynamic 使用指南——代码的获取与编译
实现虽易,写好不易——小玩意也能体现编码功力,微信消息处理框架发布
麦舒 · 2014-05-22 · via 博客园 - 麦舒

实现虽易,写好不易——小玩意也能体现编码功力,微信消息处理框架发布

2014-05-22 14:45  麦舒  阅读(6472)  评论()    收藏  举报

最近在接手同事之前写的代码,关于微信接口开发的,花了点时间把它整理成了一个类库,但是为了显得高大上,冠了一个框架之名。然后写下这么一篇文章:

代码重构之 —— 一堆if、esle 逻辑的处理

有朋友说我写这个,牛刀杀鸡,但是如果我连鸡都杀不了,怎么能够让别人相信我能杀牛呢。尽管它是个小类库,但是并一定能把它写好,如果你有更好的方案,欢迎讨论,但不要人身攻击。谢谢。

也有人说,把功能实现不就得了,管它代码的好坏呢。如果你是老板,你可以不关心它,如果你是客户,你更不需要担心它。但是,如果作为技术人员,尤其是技术部门的管理人员,你不关心它,最后代码乱到没法维护,错误频频发生,这个板子肯定是要打到你的屁股上的。题外说完,下面说一下这个类库。

一、为什么要使用它

使用这个框架来开发,是不是就不需要了解微信的接口呢?不!你仍然需要了解微信消息的通信机制和它的接口,只有你清楚了解了这些,才能用好这个类库。使用这个类库的好处是,可以规范你所写的代码,使得你所写的代码更易于维护。 

二、它封装了哪些接口

现在只是封装了消息处理的部份的接口。

即:接叫消息和发送消息的大部份接口。

三、使用指南  

1、在使用这个类库之前,你得首先注册一个微信的公众帐号,你可以到 mp.weixin.qq.com 注册。如果你已经注册完成了,请忽略。

2、点击 微信消处理框架 下载,然后解压缩。打开项目进行编译。另外:项目托管在CodePlex上了,可以到 http://wx.codeplex.com/ 下载最新的。 

3、创建一个 Web 项目,然后引用 WeiXin.dll。


现在已经转移动GitHub了,https://github.com/ansiboy/YuChang

4、创建一个 Generic Handler 文件,例如:MessageReceiver.ashx。

5、在该文件的代码如下所示,其中的 Token 值,你可以自行设定,在这里是 5201314 。

<%@ WebHandler Language="C#" Class="WeiXin.MessageReceiver" %>
#define TRACE

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Diagnostics;
using System.IO;
using System.Xml;
using WeiXin;
using WeiXin.Models;

namespace WeiXin
{
    public class MessageReceiver : IHttpHandler
    {
        public MessageReceiver()
        {

        }

        public void ProcessRequest(HttpContext context)
        {
            const string TOKEN = "5201314";
            var handler = new WeiXin.HttpHandler(TOKEN, new MessageProcesser());
            handler.Process(context.Request, context.Response);
        }

        public virtual bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

6、把该文件上传到空间上,假设路径是 “http://wx.alinq.org/Test/MessageReceiver.ashx” 。

7、登录微信公众平台,先申请一个测试的账号,然后在服务配置上填上下面的信息。

9、现在我们打开微信,扫一下公众账号,看有什么响应。

扫完后,在微信的界面上将会显示下面的信息:

10、重写 MessageProcesser 类,来实现回复自定义的消息。创建 MessageProcesser 继承类命名为 MyMessageProcesser ,例如 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using WeiXin.Models;

public class MyMessageProcesser : WeiXin.MessageProcesser
{
    public MyMessageProcesser()
    {
    }

    protected override ReplyMessage ProcessSubscribeEvent(SubscribeEvent msg)
    {
        var reply = new TextReply(msg);
        reply.Content = "你好,欢迎关注";
        return reply;
    }

    protected override ReplyMessage ProcessUnsubscribeEvent(UnsubscribeEvent msg)
    {
        var reply = new TextReply(msg);
        reply.Content = "取消关注";
        return reply;
    }
}

然后修改 MessageReceiver.ashx 文件的代码,把

var handler = new WeiXin.HttpHandler(TOKEN, new MessageProcesser());

改为:

var handler = new WeiXin.HttpHandler(TOKEN, new MyMessageProcesser());

11、现在我们再来扫一扫,看看有什么效果,当然,在扫之前请先取消关注,你会发现,回复变成了“你好,欢迎关注”。

大家如果对我做的东西感兴趣,可以和我联系:

QQ: 81932759

Q群: 71418067

上海的朋友,可以扫一扫下这面这个公众号。