正在开发的一个以最简化的操作在 .NET Core 1.0 中处理微信请求的SDK_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 正在开发的一个以最简化的操作在 .NET Core 1.0 中处理微信请求的SDK

正在开发的一个以最简化的操作在 .NET Core 1.0 中处理微信请求的SDK

 2016/8/9 5:30:19  欧阳敏岚VicBilibily  程序员俱乐部  我要评论(0)
  • 摘要:现有的微信SDK库在.NETCore1.0中表示很有压力,比如Deepleo.Weixin.SDK和Senparc.Weixin(即使现有一个转移到.NETCore1.0的初始项目,但是暂时还不能用)。前者轻量后者全而轻便,但是按照我的个人观点看来,前者太轻便了,对于不记参数的我来说点不出来就等于白搭,后者需要自定义一个处理方法来执行相关任务,但是相关的类型对于我这个就爱点出来能解决的事绝不干多余的是的我来说,还是不大乐意去用。因此就结合两者自行开发一个适合自己使用的SDK库,在项目结束后开源
  • 标签:.net SDK net 一个 开发 操作

现有的微信SDK库在 .NET Core 1.0 中表示很有压力,比如 Deepleo.Weixin.SDK 和 Senparc.Weixin(即使现有一个转移到.NET Core 1.0的初始项目,但是暂时还不能用) 。前者轻量后者全而轻便,但是按照我的个人观点看来,前者太轻便了,对于不记参数的我来说点不出来就等于白搭,后者需要自定义一个处理方法来执行相关任务,但是相关的类型对于我这个就爱点出来能解决的事绝不干多余的是的我来说,还是不大乐意去用。因此就结合两者自行开发一个适合自己使用的SDK库,在项目结束后开源。

附上现有的中间件Middleware的Demo

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Threading.Tasks;
 5 using Microsoft.AspNetCore.Builder;
 6 using Microsoft.AspNetCore.Http;
 7 using WeChat;
 8 using WeChat.Entities;
 9 
10 namespace WebApplication.Middleware
11 {
12     // You may need to install the Microsoft.AspNetCore.Http.Abstractions package into your project
13     public class WeChatMiddleware
14     {
15         private readonly RequestDelegate _next;
16 
17         public WeChatMiddleware(RequestDelegate next)
18         {
19             _next = next;
20         }
21 
22         public async Task Invoke(HttpContext httpContext)
23         {
24             if (httpContext.Request.Path.Value.ToLower().EndsWith("/wxapi"))
25             {
26                 #region Get
27                 if (httpContext.Request.Method == "GET")
28                 {
29                     string echoString = httpContext.Request.Query["echoStr"];
30                     // 没有必要参数 直接忽略
31                     if (string.IsNullOrWhiteSpace(echoString))
32                         await httpContext.Response.WriteAsync("( ̄▽ ̄) 你想干嘛");
33 
34                     if (httpContext.CheckSignature(Option.WeChatConfig))
35                         await httpContext.Response.WriteAsync(echoString);
36                 }
37                 #endregion
38                 #region POST
39                 else if (httpContext.Request.Method == "POST")
40                 {
41                     string rsp = string.Empty;
42                     var message = httpContext.GetMessage(Option.WeChatConfig);
43                     if (message == null) return;//消息体验证失败或转换失败 终止处理
44                     switch (message.Type)
45                     {
46                         case MessageType.Text:
47                             switch (message.GetText())
48                             {
49                                 case "单图文":
50                                     rsp = message.ReplyNews(new News() { description = "测试", title = "测试图文" });
51                                     break;
52                                 case "多图文":
53                                     rsp = message.ReplyNews(
54                                         new News() { description = "呵呵", title = "凸(艹皿艹 )", picurl = "url" },
55                                         new News() { title = "阿勒", picurl = "url" }
56                                         );
57                                     break;
58                                 default:
59                                     rsp = message.ReplyText("你发了:" + message.GetText());
60                                     break;
61                             }
62                             break;
63                         case MessageType.Event:
64                             var evt = message.AsEvent();
65                             switch (evt.Event)
66                             {
67                                 case Event.unsubscribe: return;
68                                 case Event.subscribe:
69                                     rsp = message.ReplyText("关注成功");
70                                     break;
71                             }
72                             break;
73                         default:
74                             rsp = message.ReplyText("阿勒,你发了神马?");
75                             break;
76                     }
77                     await httpContext.FinalResponse(Option.WeChatConfig, rsp); return; //处理到此结束 直接返回消息
78                 }
79                 #endregion
80                 // 默认不返回任何数据,以避免微信重复提交请求
81                 return;
82             }
83             await _next(httpContext);
84 
85         }
86     }
87 
88     // Extension method used to add the middleware to the HTTP request pipeline.
89     public static class WeChatMiddlewareExtensions
90     {
91         public static IApplicationBuilder UseWeChatMiddleware(this IApplicationBuilder builder)
92         {
93             return builder.UseMiddleware<WeChatMiddleware>();
94         }
95     }
96 }

 

发表评论
用户名: 匿名