您好,登錄后才能下訂單哦!
這篇文章主要介紹了如何利用.NET號(hào)開(kāi)發(fā)微信公眾號(hào)創(chuàng)建自定義菜單,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
一.前言
開(kāi)發(fā)之前,我們需要閱讀官方的接口說(shuō)明文檔,不得不吐槽一下,微信的這個(gè)官方文檔真的很爛,但是,為了開(kāi)發(fā)我們需要的功能,我們也不得不去看這些文檔.
接口文檔地址:http://mp.weixin.qq.com/wiki/13/43de8269be54a0a6f64413e4dfa94f39.html
看了這些個(gè)文檔,基本意思明白了,就是我們把我們要?jiǎng)?chuàng)建的菜單創(chuàng)建好,post到微信的服務(wù)器上面,微信服務(wù)器然后給我們一些狀態(tài)碼,從而判斷我們的菜單是否創(chuàng)建成功,只是在發(fā)送json數(shù)據(jù)以前我們要做一些身份驗(yàn)證。
二.準(zhǔn)備工作
首先把我們要?jiǎng)?chuàng)建的菜單寫(xiě)在一個(gè)txt文本中:
public string access_token { get; set; } protected void Page_Load(object sender, EventArgs e) { FileStream fs1 = new FileStream(Server.MapPath(".") + "\\menu.txt", FileMode.Open); StreamReader sr = new StreamReader(fs1, Encoding.GetEncoding("UTF-8")); string menu = sr.ReadToEnd(); sr.Close(); fs1.Close(); var str = GetPage("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wxd811f5114e3e56f3&secret=76eb33f66129692da16d148cb3c024f1", ""); JObject jo = JObject.Parse(str); access_token = jo["access_token"].ToString(); GetPage("https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" + access_token + "", menu); }
三.開(kāi)始編碼
首先我們創(chuàng)建一個(gè)一般處理程序createMenu.ashx.
代碼如下:
public string access_token { get; set; } protected void Page_Load(object sender, EventArgs e) { FileStream fs1 = new FileStream(Server.MapPath(".") + "\\menu.txt", FileMode.Open); StreamReader sr = new StreamReader(fs1, Encoding.GetEncoding("UTF-8")); string menu = sr.ReadToEnd(); sr.Close(); fs1.Close(); var str = GetPage("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wxd811f5114e3e56f3&secret=76eb33f66129692da16d148cb3c024f1", ""); JObject jo = JObject.Parse(str); access_token = jo["access_token"].ToString(); GetPage("https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" + access_token + "", menu); }
這里需要注意的是appid,secret這些參數(shù)需要換成我們自己的,這些參數(shù)我們可以放在配置文件中。也可以單獨(dú)的放在一個(gè)幫助類(lèi)里面。
同時(shí)在創(chuàng)建菜單的時(shí)候我們需要帶上我的access_token這個(gè)令牌來(lái)驗(yàn)證我們的身份,那么我們首先要做的就是獲取我們的這個(gè)令牌,那個(gè)這個(gè)令牌要如何獲取了,我們可以通過(guò)一個(gè)接口獲取,只需要傳遞我們的appid和secret這個(gè)兩個(gè)參數(shù)
代碼如下:
{"access_token":"jVLAT9Rp9dNgxI4pb4RWlSx_9HJLXICmk_uWDlRtAug8wcaWhZZ10eqZCYRZrEwCIJf1-vBhS9YEX00Dj7qlJCyTIWOxTruOd25opkf-0","expires_in":7200}
上面的GetPage方法的返回值。這樣我們就可以獲取我們的令牌了。
最后一步:帶上我們的令牌,post我們的json菜單數(shù)據(jù)就可以創(chuàng)建菜單了。
當(dāng)你看到如下代碼:
{"errcode":0,"errmsg":"ok"}
說(shuō)明你的菜單創(chuàng)建成功了。
四:GetPage
代碼如下:
public string GetPage(string posturl, string postData) { Stream outstream = null; Stream instream = null; StreamReader sr = null; HttpWebResponse response = null; HttpWebRequest request = null; Encoding encoding = Encoding.UTF8; byte[] data = encoding.GetBytes(postData); // 準(zhǔn)備請(qǐng)求... try { // 設(shè)置參數(shù) request = WebRequest.Create(posturl) as HttpWebRequest; CookieContainer cookieContainer = new CookieContainer(); request.CookieContainer = cookieContainer; request.AllowAutoRedirect = true; request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = data.Length; outstream = request.GetRequestStream(); outstream.Write(data, 0, data.Length); outstream.Close(); //發(fā)送請(qǐng)求并獲取相應(yīng)回應(yīng)數(shù)據(jù) response = request.GetResponse() as HttpWebResponse; //直到request.GetResponse()程序才開(kāi)始向目標(biāo)網(wǎng)頁(yè)發(fā)送Post請(qǐng)求 instream = response.GetResponseStream(); sr = new StreamReader(instream, encoding); //返回結(jié)果網(wǎng)頁(yè)(html)代碼 string content = sr.ReadToEnd(); string err = string.Empty; Response.Write(content); return content; } catch (Exception ex) { string err = ex.Message; return string.Empty; } }
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“如何利用.NET號(hào)開(kāi)發(fā)微信公眾號(hào)創(chuàng)建自定義菜單”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。