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的简单使用的更多相关文章

  1. [angularjs] MVC + Web API + AngularJs 搭建简单的 CURD 框架

    MVC + Web API + AngularJs 搭建简单的 CURD 框架 GitHub 地址:https://github.com/liqingwen2015/Wen.MvcSinglePage ...

  2. ASP.NET - Web API,从简单类型到复杂类型的参数传递用例,以及传递简单string类型的解决办法

    一,简单类型的传值 比如 public Users Get(int id) ,它可以使用两种方式获取: api/default/ $.get("/api/default",{id: ...

  3. 通过Knockout.js + ASP.NET Web API构建一个简单的CRUD应用

    REFERENCE FROM : http://www.cnblogs.com/artech/archive/2012/07/04/Knockout-web-api.html 较之面向最终消费者的网站 ...

  4. web api Route属性定义

    ASP.NET Web API路由,简单来说,就是把客户端请求映射到对应的Action上的过程.在"ASP.NET Web API实践系列03,路由模版, 路由惯例, 路由设置"一 ...

  5. ASP.NET Web API - ASP.NET MVC 4 系列

           Web API 项目是 Windows 通信接口(Windows Communication Foundation,WCF)团队及其用户激情下的产物,他们想与 HTTP 深度整合.WCF ...

  6. ASP.NET Web API实践系列04,通过Route等特性设置路由

    ASP.NET Web API路由,简单来说,就是把客户端请求映射到对应的Action上的过程.在"ASP.NET Web API实践系列03,路由模版, 路由惯例, 路由设置"一 ...

  7. ASP.NET Web API——选择Web API还是WCF

    WCF是.NET平台服务开发的一站式框架,那么为什么还要有ASP.NET Web API呢?简单来说,ASP.NET Web API的设计和构建只考虑了一件事情,那就是HTTP,而WCF的设计主要是考 ...

  8. Global Error Handling in ASP.NET Web API 2(webapi2 中的全局异常处理)

    目前,在Web API中没有简单的方法来记录或处理全局异常(webapi1中).一些未处理的异常可以通过exception filters进行处理,但是有许多情况exception filters无法 ...

  9. 我所理解的RESTful Web API [设计篇]

    <我所理解的RESTful Web API [Web标准篇]>Web服务已经成为了异质系统之间的互联与集成的主要手段,在过去一段不短的时间里,Web服务几乎清一水地采用SOAP来构建.构建 ...

随机推荐

  1. python 验证码识别

    一.python识别简单验证码: 代码: ''' func:实现简单验证码获取 ''' import pytesseract from PIL import Image #首先通过Image打开一个图 ...

  2. webpack入门(二)what is webpack

    webpack is a module bundler.webpack是一个模块打包工具,为了解决上篇一提到的各种模块加载或者转换的问题. webpack takes modules with dep ...

  3. wildfly tomcat 服务器不响应 不返回 死住了 查看tcp CLOSE_WAIT 暴多

    I'm also having the same issue with a very latest Tomcat server (7.0.40). It goes non-responsive onc ...

  4. 2019阿里校招测评题,光明小学完全图最短路径问题(python实现)

    题目:光明小学的小朋友们要举行一年一度的接力跑大赛了,但是小朋友们却遇到了一个难题:设计接力跑大赛的线路,你能帮助他们完成这项工作么?光明小学可以抽象成一张有N个节点的图,每两点间都有一条道路相连.光 ...

  5. java 常用的类

    一.日期操作:Calendar类和SimpleDateFormat类 public void Test1() { Calendar calendar=Calendar.getInstance(); S ...

  6. 高级组件——文件选择器JFileChooser

    1.创建文件选择器 JFileChooser 2.设置选择模式 setFileSelectionMode(int mode) JFileChooser.FILES_ONLY 只能选择文件(默认) JF ...

  7. jmeter打开图形化界面时指定代理

    \apache-jmeter-4.0\bin>jmeter -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=8888 如果不想在每个请求里面指定代理的话可 ...

  8. Ansible Callback

    非api模式下自定义callback ansible.cfg中开启callback功能 callback_plugins = /usr/share/ansible/plugins/callback # ...

  9. nGrinder TestRunnerInsertMysqlSingle.groovy

    s C:\Users\Lindows\workspace\GroovyTest\src\com\iteye\lindows\mysql\TestRunnerInsertMysqlSingle.groo ...

  10. Linux下C语言连接MySQL

    本文出自   http://blog.csdn.net/shuangde800 首先保证安装: 1:安装MySQL:sudo apt-get install mysql-server mysql-cl ...