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;
    
            }
    
           
        }
    }
  • 相关阅读:
    android基础开发之scrollview
    java网络---再论URL & URI
    Android Studio 有用的插件
    java网络---查找Internet
    java网络---流
    Qt学习之路(1)------Qt常用类用法说明
    将批量下载的博客导入到手机后,通过豆约翰博客阅读器APP(Android手机)进行浏览,白字黑底,保护眼睛,图文并茂。
    如何收藏互联网上的任意网页到系统某个分类下,之后进行批量导出发布等---博客备份专家的博文收藏功能您不可不知
    很喜欢看某方面的文章,如何将不同站点,不同博主同一类别的文章归类整合到一起,再批量导出成各种格式---豆约翰博客备份专家新增按分类收藏博文功能
    豆约翰博客备份专家博客导出示例(PDF,CHM)
  • 原文地址:https://www.cnblogs.com/zoro-zero/p/5420974.html
Copyright © 2011-2022 走看看