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来构建.构建 ...
随机推荐
- Python中何时使用断言 assert
使用断言的最佳时机偶尔会被提起,通常是因为有人误用,因此我觉得有必要写一篇文章来阐述一下什么时候应该用断言,为什么应该用,什么时候不该用. 对那些没有意识到用断言的最佳时机的人来说,Python的断言 ...
- Gnome添加Open with Code菜单
解决方法 测试环境: Manjaro Linux Rolling at 2018-08-31 19:04:49 Microsoft Visual Stdio Code 1.26.1 Bulid: 20 ...
- Vue--路由
main.js: 1.先在项目安装路由模块:npm install vue-router --save-dev2.使用路由:main.js首先要引用vue模块: import Vue from 'vu ...
- A1132. Cut Integer
Cutting an integer means to cut a K digits lone integer Z into two integers of (K/2) digits long int ...
- PHP的SQL语句优化
(转)仅供自己学习,特此转发 普遍遇到的慢SQL有以下三种: 1.未走索引 2.where条件里包含子查询,多表联查 3.查询大量数据 解决 一.索引:SQL中的高速公路 但凡优化SQL,首先要看的就 ...
- P2602 [ZJOI2010]数字计数
https://www.luogu.org/problemnew/show/P2602 数位dp #include <bits/stdc++.h> using namespace std; ...
- linux提取第一列且删除第一行(awk函数)
如下文件所示,只想提取红框中的内容,即进行提取第一列,且去除第一行的操作 则用到下列命令行: awk 'NR == 1 {next} {print $1}' file.txt > file_co ...
- Hibernate3 多对多关系
学习hibernate的笔迹第三篇,主要内容:多对多关系, 检索策略,HQL查询,QBC,事物管理,c3p0配置 1.1.1 Hibernate的关联关系映射:(多对多) 1.1.1.1 多 ...
- pytest 4.scope="module"介绍
前言: 上一篇讲到fixture通过scope参数控制setup级别,不填的时候默认 scope="function",那么接下来就会讲scope="module&quo ...
- Java NIO系列教程(八)JDK AIO编程
目录: Reactor(反应堆)和Proactor(前摄器) <I/O模型之三:两种高性能 I/O 设计模式 Reactor 和 Proactor> <[转]第8章 前摄器(Proa ...