web api HttpResponseMessage的简单使用
using Lemon.Common;
using Lemon.WeChat.Model;
using Lemon.WeChat.Services;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Senparc.Weixin.MP;
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Text;
using System.Web;
using System.Web.Configuration;
using System.Web.Http;
using System.Xml; namespace Lemon.WeChat.WebApi
{
/// <summary>
/// 微信回调
/// </summary>
[RoutePrefix("wechat/WeCallback")]
public class WeCallbackController : ApiController
{
private readonly string Token = "lemon95";
/// <summary>
/// 构造函数
/// </summary>
public WeCallbackController()
{
Token = WebConfigurationManager.AppSettings["WeixinToken"] ?? Token;
}
/// <summary>
///
/// </summary>
/// <param name="signature"></param>
/// <param name="timestamp"></param>
/// <param name="nonce"></param>
/// <param name="echostr"></param>
[Route("")]
public HttpResponseMessage Get(string signature, string timestamp, string nonce, string echostr)
{
Logger.Info(string.Format("参数:signature:{0},timestamp:{1},nonce:{2},echostr:{3}", signature, timestamp, nonce, echostr));
string returnstr = string.Empty;
if (CheckSignature.Check(signature, timestamp, nonce, Token))
{
returnstr = echostr;
}
else
{
returnstr = "验证失败";
} HttpResponseMessage result = new HttpResponseMessage
{
Content = new StringContent(returnstr, Encoding.UTF8, "application/x-www-form-urlencoded")
};
return result;
} /// <summary>
///
/// </summary>
/// <param name="signature"></param>
/// <param name="timestamp"></param>
/// <param name="nonce"></param>
[Route("")]
public HttpResponseMessage Post(string signature, string timestamp, string nonce)
{
Logger.Info(string.Format("参数:signature:{0},timestamp:{1},nonce:{2}", signature, timestamp, nonce)); string returnstr = string.Empty;
try
{
if (!CheckSignature.Check(signature, timestamp, nonce, Token))
{
returnstr = "验证失败";
}
else
{
var requestContent = Request.Content.ReadAsStreamAsync().Result;
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(requestContent);
Logger.Info(xmlDoc.InnerXml);
WeCalbackService svr = new WeCalbackService();
returnstr = svr.Callback(xmlDoc);
}
}
catch (Exception ex)
{
Logger.Error("WeCallbackController[Post]发生异常。", ex);
} HttpResponseMessage result = new HttpResponseMessage
{
Content = new StringContent(returnstr, Encoding.UTF8, "application/x-www-form-urlencoded")
};
return result;
} /// <summary>
/// 回调通知
/// </summary>
/// <returns></returns>
[HttpPost, Route("Notify")]
public HttpResponseMessage Notify()
{
string returnstr = string.Empty;
try
{
var requestContent = Request.Content.ReadAsStreamAsync().Result;
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(requestContent);
WeCalbackService svr = new WeCalbackService();
returnstr = svr.Notify(xmlDoc);
}
catch (Exception ex)
{
Logger.Error("WeCallbackController[Notify]发生异常。", ex);
}
HttpResponseMessage result = new HttpResponseMessage
{
Content = new StringContent(returnstr, Encoding.UTF8, "application/x-www-form-urlencoded")
};
return result; } }
}
web api HttpResponseMessage的简单使用的更多相关文章
- [angularjs] MVC + Web API + AngularJs 搭建简单的 CURD 框架
MVC + Web API + AngularJs 搭建简单的 CURD 框架 GitHub 地址:https://github.com/liqingwen2015/Wen.MvcSinglePage ...
- ASP.NET - Web API,从简单类型到复杂类型的参数传递用例,以及传递简单string类型的解决办法
一,简单类型的传值 比如 public Users Get(int id) ,它可以使用两种方式获取: api/default/ $.get("/api/default",{id: ...
- 通过Knockout.js + ASP.NET Web API构建一个简单的CRUD应用
REFERENCE FROM : http://www.cnblogs.com/artech/archive/2012/07/04/Knockout-web-api.html 较之面向最终消费者的网站 ...
- web api Route属性定义
ASP.NET Web API路由,简单来说,就是把客户端请求映射到对应的Action上的过程.在"ASP.NET Web API实践系列03,路由模版, 路由惯例, 路由设置"一 ...
- ASP.NET Web API - ASP.NET MVC 4 系列
Web API 项目是 Windows 通信接口(Windows Communication Foundation,WCF)团队及其用户激情下的产物,他们想与 HTTP 深度整合.WCF ...
- ASP.NET Web API实践系列04,通过Route等特性设置路由
ASP.NET Web API路由,简单来说,就是把客户端请求映射到对应的Action上的过程.在"ASP.NET Web API实践系列03,路由模版, 路由惯例, 路由设置"一 ...
- ASP.NET Web API——选择Web API还是WCF
WCF是.NET平台服务开发的一站式框架,那么为什么还要有ASP.NET Web API呢?简单来说,ASP.NET Web API的设计和构建只考虑了一件事情,那就是HTTP,而WCF的设计主要是考 ...
- Global Error Handling in ASP.NET Web API 2(webapi2 中的全局异常处理)
目前,在Web API中没有简单的方法来记录或处理全局异常(webapi1中).一些未处理的异常可以通过exception filters进行处理,但是有许多情况exception filters无法 ...
- 我所理解的RESTful Web API [设计篇]
<我所理解的RESTful Web API [Web标准篇]>Web服务已经成为了异质系统之间的互联与集成的主要手段,在过去一段不短的时间里,Web服务几乎清一水地采用SOAP来构建.构建 ...
随机推荐
- Ubuntu Server 18.04 网络设置不生效的解决
在Ubuntu18.04中,传统的配置/etc/network/interfaces已无用https://www.cnblogs.com/dunitian/p/6658578.html 新方法:修改 ...
- OO第二阶段纪实
$ 0 写在前面 往往是那些令人格外痛苦的经历,会带给人以最快的成长.转眼间,半个学期的时间过去了,时间匆匆,不管之前对这几次充满了怎样的畏惧,在身边朋友们的帮助和努力下,我也渐渐度过了一个个难关.回 ...
- HDU--5269 ZYB loves Xor I (字典树)
题目电波: HDU--5269 ZYB loves Xor I 首先我们先解决 ai xor aj 每个数转化为二进制 我们用字典树统计 每个节点 0 和 1 的出现的个数 #include< ...
- Surface Pro 4 系统优化全教程及QA
甲.如何根据你的需求选择相应版本的surface1.Core M3-6Y30,Core i5-6300U,Core i7-6650U的性能差距有多大?2.HD 515,HD520,Iris 540的性 ...
- 第二篇 - python爬取免费代理
代理的作用参考https://wenda.so.com/q/1361531401066511?src=140 免费代理很多,但也有很多不可用,所以我们可以用程序对其进行筛选.以能否访问百度为例. 1. ...
- python pip NameError:name 'pip' is not defined”
https://www.jianshu.com/p/f57f98ebcb21 问题: 如果直接在命令行里面输入pip或者pip3,提示:(如图1) “NameError:name 'pip' is n ...
- marks学习2
控件的大小单位用dp 控件的高度和宽度 sp字体的单位 控件的字体的大小.可缩放字体. 内边距 padding控件的边缘到控件内荣的距离
- (编辑距离问题 线性DP) nyoj1431-DNA基因鉴定
题目描述: 我们经常会听说DNA亲子鉴定是怎么回事呢?人类的DNA由4个基本字母{A,C,G,T}构成,包含了多达30亿个字符.如果两个人的DNA序列相差0.1%,仍然意味着有300万个位置不同,所以 ...
- DB9 ------ 接口定义
下图是母座和公座的接口定义: 特别提醒:以上是公座和母座的接口定义,如果是串口线,RXD就变成TXD,以此类推.
- 神经网络4_BP神经网络
sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&a ...