zoukankan      html  css  js  c++  java
  • 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免费打印控件推荐
    json.net 反序列化
    PHP文件显示乱码
    ASP.NET服务开启后Session丢失的解决方法
    phpmyadmin 下载
    phpMyAdmin 错误 缺少 mysqli 扩展。请检查 PHP 配置
    解决IE6IE7下li上下间距
    获取IP地址方法
    Winform中DataGridView的DataGridViewCheckBoxColumn使用方法(选中与选不中)
    IIS配置PHP5.3配置完成后FastCGI Error14001 (0x800736b1)___解决方法
  • 原文地址:https://www.cnblogs.com/zoro-zero/p/5420974.html
Copyright © 2011-2022 走看看