.net MVC 微信公衆號 獲取 access_token

官方文檔說明:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183&token=&lang=zh_CNhtml

具體實現方法以下:json

類WXApi.cs:api

 #region 獲取access_token
        /// <summary>
        /// 獲取access_token
        /// </summary>
        public static string GetAccessToken(string appid, string secret)
        {
            string strJson = HttpRequestUtil.RequestUrl(string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", appid, secret));
            return Tools.GetJsonValue(strJson, "access_token");
        }
        #endregion

類AdminUtil.cs:cookie

#region 獲取access_token
        /// <summary>
        /// 獲取access_token
        /// </summary>
        public static string GetAccessToken()
        {
            string access_token = WXModel.access_token;
            string AppID = WXModel.AppID;
            string AppSecret = WXModel.AppSecret;

            //獲取session 中的 access_token
            if (string.IsNullOrWhiteSpace(access_token)) //還沒有保存過access_token
            {
                access_token = WXApi.GetAccessToken(AppID, AppSecret);
            }
            else
            {
                if (WXApi.TokenExpired(access_token)) //access_token過時
                {
                    access_token = WXApi.GetAccessToken(AppID, AppSecret);
                }
                else
                {
                    return access_token;
                }
            }
            //更新access_token
            HttpContext.Current.Application["access_token"] = access_token;
            return access_token;
        }
        #endregion

Controller:session

public void GetAccessToken()
        {
            string access_token = AdminUtil.GetAccessToken();            
            Response.Write("access_token=" + access_token);           
        }

工具類:app

public static class WXModel
    {
        public static string access_token;
        public static string AppID;
        public static string AppSecret;
        public static string mch_id;
        public static string key;
    }
 public class HttpRequestUtil
    {
        #region 請求Url,不發送數據
        /// <summary>
        /// 請求Url,不發送數據
        /// </summary>
        public static string RequestUrl(string url)
        {
            return RequestUrl(url, "POST");
        }
        #endregion

        #region 請求Url,不發送數據
        /// <summary>
        /// 請求Url,不發送數據
        /// </summary>
        public static string RequestUrl(string url, string method)
        {
            // 設置參數
            HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
            CookieContainer cookieContainer = new CookieContainer();
            request.CookieContainer = cookieContainer;
            request.AllowAutoRedirect = true;
            request.Method = method;
            request.ContentType = "text/html";
            request.Headers.Add("charset", "utf-8");

            //發送請求並獲取相應迴應數據
            HttpWebResponse response = request.GetResponse() as HttpWebResponse;
            //直到request.GetResponse()程序纔開始向目標網頁發送Post請求
            Stream responseStream = response.GetResponseStream();
            StreamReader sr = new StreamReader(responseStream, Encoding.Default);
            //返回結果網頁(html)代碼
            string content = sr.ReadToEnd();
            return content;
        }
        #endregion

        #region 請求Url,發送json數據
        /// <summary>
        /// 請求Url,發送json數據
        /// </summary>
        public static string RequestUrlSendMsg(string url, string method,string JSONData)
        {
            byte[] bytes = Encoding.UTF8.GetBytes(JSONData);
            // 設置參數
            HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
            CookieContainer cookieContainer = new CookieContainer();
            request.CookieContainer = cookieContainer;
            request.AllowAutoRedirect = true;
            request.Method = method;
            request.ContentType = "text/html";
            request.Headers.Add("charset", "utf-8");
            Stream reqstream = request.GetRequestStream();
            reqstream.Write(bytes, 0, bytes.Length);
            //聲明一個HttpWebRequest請求  
            request.Timeout = 90000;
            //設置鏈接超時時間  
            request.Headers.Set("Pragma", "no-cache");  
            //發送請求並獲取相應迴應數據
            HttpWebResponse response = request.GetResponse() as HttpWebResponse;
            //直到request.GetResponse()程序纔開始向目標網頁發送Post請求
            Stream responseStream = response.GetResponseStream();
            StreamReader sr = new StreamReader(responseStream, Encoding.Default);
            //返回結果網頁(html)代碼
            string content = sr.ReadToEnd();
            return content;
        }
        #endregion
    }
View Code
相關文章
相關標籤/搜索