.net自动获取token,
2016-03-03 21:12
459 查看
.NET自动获取Token,
我就直接上图片了,后面是完整代码,可以复制到你的项目,
我这个方法有点笨,但是没有任何问题
--------------------------------------------------------------从下方开始复制------------------------------------------------------
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Web; using System.Web.Script.Serialization; using WeChat.Models;
namespace WeChat.DAL {
public class WeChatCommon { #region 获取Access_token
/// <summary> /// Token /// </summary> private static string _access_token { get; set; } /// <summary> /// 时间,用来判断是否该更新了 /// </summary> private static int _datetime = 0;
/// <summary> /// Access_token,每个小时获取一次 /// </summary> private static string Access_token { get { //第二次判断防止多次申请 if (_datetime != DateTime.Now.Hour) { _datetime = DateTime.Now.Hour; if (GetAccess_token()) return _access_token; else return null; } else return _access_token; } } #endregion
#region 获取Access_token /// <summary> /// 返回Access_token /// </summary> /// <returns></returns> private static string ReturnAccess_token() { //第一次判断,每小时刷新一次Token,此处带锁 if (_datetime != DateTime.Now.Hour) { lock (Access_token) { return Access_token; } } return _access_token;
}
/// <summary> /// 获取GetAccess_token /// </summary> /// <returns>Access_token</returns> private static bool GetAccess_token() { string Secret = ""; string APPID = ""; //url string uri =string.Format( @"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}",APPID,Secret);
//初始化http请求 HttpWebRequest request = HttpWebRequest.Create(uri) as HttpWebRequest; request.Method = "GET";//请求方法 request.AllowAutoRedirect = false;//禁止重定向
//获取返回的信息 using (WebResponse web = request.GetResponse()) { StreamReader reader = new StreamReader(web.GetResponseStream(), Encoding.UTF8); string json = reader.ReadToEnd(); JavaScriptSerializer js = new JavaScriptSerializer(); Access_token access_token = js.Deserialize<Access_token>(json);
if (access_token.errcode != "41004" && access_token.errcode != null) { _access_token = access_token.access_token; return true; } else return false;
} }
#endregion } }
-------------------------------------------------------------------------------------------------------
点击链接加入群【ASP.NET鹰组】:http://jq.qq.com/?_wv=1027&k=2ERJ0qo
ASP.NET鹰组 460845632
我就直接上图片了,后面是完整代码,可以复制到你的项目,
我这个方法有点笨,但是没有任何问题
--------------------------------------------------------------从下方开始复制------------------------------------------------------
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Web; using System.Web.Script.Serialization; using WeChat.Models;
namespace WeChat.DAL {
public class WeChatCommon { #region 获取Access_token
/// <summary> /// Token /// </summary> private static string _access_token { get; set; } /// <summary> /// 时间,用来判断是否该更新了 /// </summary> private static int _datetime = 0;
/// <summary> /// Access_token,每个小时获取一次 /// </summary> private static string Access_token { get { //第二次判断防止多次申请 if (_datetime != DateTime.Now.Hour) { _datetime = DateTime.Now.Hour; if (GetAccess_token()) return _access_token; else return null; } else return _access_token; } } #endregion
#region 获取Access_token /// <summary> /// 返回Access_token /// </summary> /// <returns></returns> private static string ReturnAccess_token() { //第一次判断,每小时刷新一次Token,此处带锁 if (_datetime != DateTime.Now.Hour) { lock (Access_token) { return Access_token; } } return _access_token;
}
/// <summary> /// 获取GetAccess_token /// </summary> /// <returns>Access_token</returns> private static bool GetAccess_token() { string Secret = ""; string APPID = ""; //url string uri =string.Format( @"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}",APPID,Secret);
//初始化http请求 HttpWebRequest request = HttpWebRequest.Create(uri) as HttpWebRequest; request.Method = "GET";//请求方法 request.AllowAutoRedirect = false;//禁止重定向
//获取返回的信息 using (WebResponse web = request.GetResponse()) { StreamReader reader = new StreamReader(web.GetResponseStream(), Encoding.UTF8); string json = reader.ReadToEnd(); JavaScriptSerializer js = new JavaScriptSerializer(); Access_token access_token = js.Deserialize<Access_token>(json);
if (access_token.errcode != "41004" && access_token.errcode != null) { _access_token = access_token.access_token; return true; } else return false;
} }
#endregion } }
-------------------------------------------------------------------------------------------------------
点击链接加入群【ASP.NET鹰组】:http://jq.qq.com/?_wv=1027&k=2ERJ0qo
ASP.NET鹰组 460845632
相关文章推荐
- bzoj4411 [Usaco2016 Feb] Load balancing
- 01背包问题最基础也是最重要的、
- golang捕获ctrl+c退出程序
- 快速排序
- Web开发学习之路--Eclipse+Tomcat+mysql之初体验
- Android布局的各种对齐问题
- set集中查找find
- PAT-1082. Read Number in Chinese (25)(模拟)
- Web开发学习之路--Eclipse+Tomcat+mysql之初体验
- C辗转相除法求最大公约数的实现
- BootStrap详解之(一)
- DSP 2812: 使用C++封装中断控制器PIE
- Android Studio 1.3及以上 NDK环境配置
- hdu 1272 小希的迷宫 解题报告
- PAT-A1077. Kuchiguse (20)(模拟)
- 第一次写博客
- SQL Server 2008 R2 完全卸载与重新安装
- xib自定义UIView报错误 "forUndefinedKey:]: this class is not key value coding-compliant for the key"
- hiho Hamiltonian Cycle
- Android Fragment 基础初识(下)