1. /// <summary>
  2. /// 获取Access token
  3. /// </summary>
  4. /// <param name="appid"></param>
  5. /// <param name="secret"></param>
  6. /// <returns></returns>
  7. public static string GetAccessToken()
  8. {
  9. //创建一个配置
  10. var Configuration = new ConfigurationBuilder()
  11. //添加配置文件
  12. .Add(new JsonConfigurationSource { Path = "appsettings.json", ReloadOnChange = true })
  13. .Build();
  14. //赋值
  15. _config = Configuration;
  16. //读取key和secret
  17. string appid = _config["WeiXingSession:AppID"];
  18. string secret = _config["WeiXingSession:AppSecret"];
  19.  
  20. string strJson = HttpRequestUtil.RequestUrl(string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", appid, secret));
  21. return GetJsonValue(strJson, "access_token");
  22. }
  23.  
  24. /// <summary>
  25. /// HTTP请求功能
  26. /// </summary>
  27. internal class HttpRequestUtil
  28. {
  29. #region 请求Url,不发送数据
  30. /// <summary>
  31. /// 请求Url,不发送数据
  32. /// </summary>
  33. public static string RequestUrl(string url)
  34. {
  35. return RequestUrl(url, "POST");
  36. }
  37. #endregion
  38.  
  39. #region 请求Url,不发送数据
  40. /// <summary>
  41. /// 请求Url,不发送数据
  42. /// </summary>
  43. public static string RequestUrl(string url, string method)
  44. {
  45. // 设置参数
  46. HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
  47. CookieContainer cookieContainer = new CookieContainer();
  48. request.CookieContainer = cookieContainer;
  49. request.AllowAutoRedirect = true;
  50. request.Method = method;
  51. request.ContentType = "text/html";
  52. request.Headers.Add("charset", "utf-8");
  53.  
  54. //发送请求并获取相应回应数据
  55. HttpWebResponse response = request.GetResponse() as HttpWebResponse;
  56. //直到request.GetResponse()程序才开始向目标网页发送Post请求
  57. Stream responseStream = response.GetResponseStream();
  58. StreamReader sr = new StreamReader(responseStream, Encoding.UTF8);
  59. //返回结果网页(html)代码
  60. string content = sr.ReadToEnd();
  61. return content;
  62. }
  63. #endregion
  64.  
  65. }
  66. public static string GetJsonValue(string jsonStr, string key)
  67. {
  68. string result = string.Empty;
  69. if (!string.IsNullOrEmpty(jsonStr))
  70. {
  71. key = "\"" + key.Trim('"') + "\"";
  72. int index = jsonStr.IndexOf(key) + key.Length + 1;
  73. if (index > key.Length + 1)
  74. {
  75. //先截逗号,若是最后一个,截“}”号,取最小值
  76. int end = jsonStr.IndexOf(',', index);
  77. if (end == -1)
  78. {
  79. end = jsonStr.IndexOf('}', index);
  80. }
  81.  
  82. result = jsonStr.Substring(index, end - index);
  83. result = result.Trim(new char[] { '"', ' ', '\'' }); //过滤引号或空格
  84. }
  85. }
  86. return result;
  87. }

ASP.NET WEBAPI 获取微信Access token的更多相关文章

  1. [原创] ASP.NET WEBAPI 接入微信公众平台 总结,Token验证失败解决办法

    首先,请允许我说一句:shit! 因为这个问题不难,但是网上有关 ASP.NET WEBAPI的资料太少.都是PHP等等的. 我也是在看了某位大神的博客后有启发,一点点研究出来的. 来看正题! 1.微 ...

  2. 微信Access Token 缓存方法

    微信Access Token默认缓存是2小时,但是需要特别强调,微信服务号和微信企业号缓存并不相同. (1)微信公众号号:每次Http请求Access Token 系统会返回不同的Token,并附带超 ...

  3. ASP.NET WebApi 基于JWT实现Token签名认证

    一.前言 明人不说暗话,跟着阿笨一起玩WebApi!开发提供数据的WebApi服务,最重要的是数据的安全性.那么对于我们来说,如何确保数据的安全将会是需要思考的问题.在ASP.NET WebServi ...

  4. 微信公众平台开发(112) 自动更新微信access token

    关键字:Memcache access_token 更新 存储 7200 本文介绍如何存储及更新 access token的方法. 一.Access Token access_token是公众号的全局 ...

  5. 使用缓存Memcache存储更新微信access token

    关键字:Memcache access_token 更新 存储 7200 本文介绍如何使用缓存Memcache存储及更新 access token的方法. 一.Access Token access_ ...

  6. C# v3微信 access token 过期处理的问题

    //记录access token 申请时的时间 private static DateTime GetAccessToken_Time; /// <summary> /// 过期时间为72 ...

  7. 微信access token过期

    两台服务器使用同一个微信账号(同一个app id) 时,当其中一台服务器向微信请求access token时,会造成另一台服务器的access token过期

  8. Asp.Net WebApi一个简单的Token验证

    1.前言: WebAPI主要开放数据给手机APP,Pad,其他需要得知数据的系统,或者软件应用.Web 用户的身份验证,及页面操作权限验证是B/S系统的基础功能.我上次写的<Asp.Net MV ...

  9. ASP.NET Core获取微信订单数据

    前几天对接了一波微信的订单,分享出来 1.生成签名 根据微信要求把appid.商户号.随机数.和订单号还有商户平台的密钥拼接成一个字符串然后进行MD5加密 2.拼接请求XML 然后用拼接好的XML向微 ...

  10. ASP.NET MVC获取微信返回的json数据分页

    View @model JiaYe.WeiXin.Models.ViewModels.UserViewModel <div class="pull-left pagination&qu ...

随机推荐

  1. go web编程学习记录

    学习 https://segmentfault.com/a/1190000013297625的记录 简单demo package main import "github.com/gin-go ...

  2. Java语言出现的背景、影响及应用前景分析

    一.背景 1991年 ,SUN MicroSystem公司的 Jame Gosling. Bill Joe等人 ,为在电视.控制烤面包箱等家用消费类电子产品上进行交互式操作而开发了一个名为Oak的软件 ...

  3. angular 用法总结

    架构: 1.一个总页面,然后用组件组成 2.每个组件又由三个文件组成,html,css,ts,三种不同的语言放在三个不同的文件中, 3.ts是总配置文件,里面联合各个其他文件(html,css) 语法 ...

  4. vue 鼠标拖拽

    <template> <div class="home"> <div id="box" v-drag></div> ...

  5. File类的基本用法

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...

  6. Android开发数据库Sqlite

    创建数据库 首先我们要了解这个类:SQLiteOpenHelper: 1.写一个类继承SQLiteOpenHelper 2.实现里面的方法,创建构造方法 参数解释: /** @param: conte ...

  7. H5分享功能--带图标、说明

    代码实现 index.vue <template> <div id="app"> <SelfSharePage v-if="share_da ...

  8. Go语言互斥锁(sync.Mutex)和读写互斥锁(sync.RWMutex)

    暴力锁 package main import ( "fmt" "sync" "time" ) /* Go语言包中的 sync 包提供了两种 ...

  9. 杭电oj 蟠桃记

    Problem Description 喜欢西游记的同学肯定都知道悟空偷吃蟠桃的故事,你们一定都觉得这猴子太闹腾了,其实你们是有所不知:悟空是在研究一个数学问题!什么问题?他研究的问题是蟠桃一共有多少 ...

  10. iOS开发之实现自定义浮动操作框效果

    今天有个需求是如上图实现类似微信的自定义浮动操作框效果 我自己就写了个demo,大家感兴趣的可以试试,下面是代码 VC代码如下 #import "TestCustomMenuItemVC.h ...