日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 微信自定义菜单开发_微信公众号开发之设置自定义菜单实例代码【java版】...

發(fā)布時(shí)間:2025/3/20 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 微信自定义菜单开发_微信公众号开发之设置自定义菜单实例代码【java版】... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本實(shí)例是為了實(shí)現(xiàn)在管理后臺(tái)實(shí)現(xiàn)微信菜單的添加刪除管理。

1、首先我們需要新建一個(gè)數(shù)據(jù)庫表用于存放menu菜單項(xiàng)

可包含的字段有id、父類id、name、排序、是否顯示、類型(view、click)、鏈接、adddate

注意后臺(tái)存menu菜單數(shù)據(jù)時(shí),parentId=-1為一級(jí)菜單,或parendId為一級(jí)菜單的id作為該一級(jí)菜單下的二級(jí)菜單

2、在設(shè)置菜單時(shí)需要向微信接口傳menuJson字符串,所以要先拼接字符串,后臺(tái)定義一個(gè)creatMenu()

public bool creatMenu()

{

string menuJson = "";

//這里默認(rèn)parentId=-1為最外層菜單,isactive=1為顯示,responseType=1為click類型

DataTable dtAMenu = Service.SelectDataTable("id, name, responseType, jsonStr,url", "WEIXINMENU", " parentId=-1 and isactive=1 order by sort");

if (dtAMenu.Rows.Count > 0)

{

menuJson = "{\"button\":[";

for (int i = 0; i < dtAMenu.Rows.Count; i++)

{

DataTable dtBMenu = Service.SelectDataTable("id, name, responseType, jsonStr,url", wx, " parentId=" + dtAMenu.Rows[i]["id"].ToString() + " and isactive=1 order by sort");

if (dtBMenu.Rows.Count > 0)

{

menuJson += "{\"name\":\"" + dtAMenu.Rows[i]["name"].ToString() + "\",\"sub_button\":[";

for (int j = 0; j < dtBMenu.Rows.Count; j++)

{

if (Convert.ToInt32(dtBMenu.Rows[j]["responseType"]) == 2)

{

menuJson += "{\"type\":\"view\",\"name\":\"" + dtBMenu.Rows[j]["name"].ToString() + "\",\"url\":\"" + dtBMenu.Rows[j]["jsonStr"].ToString() + "\"},";

}

else

{

menuJson += "{\"type\":\"click\",\"name\":\"" + dtBMenu.Rows[j]["name"].ToString() + "\",\"key\":\"eventKey_" + dtBMenu.Rows[j]["id"].ToString() + "\"},";

}

}

menuJson = menuJson.TrimEnd(',');

menuJson += "]},";

}

else

{

//if (Convert.ToInt32(dtAMenu.Rows[i]["responseType"]) == 2)

//{

menuJson += "{\"type\":\"view\",\"name\":\"" + dtAMenu.Rows[i]["name"].ToString() + "\",\"url\":\"" + dtAMenu.Rows[i]["jsonStr"].ToString() + "\"},";

//}

//else

//{

// menuJson += "{\"type\":\"click\",\"name\":\"" + dtAMenu.Rows[i]["name"].ToString() + "\",\"key\":\"eventKey_" + dtAMenu.Rows[i]["id"].ToString() + "\"},";

//}

}

dtBMenu.Dispose();

}

dtAMenu.Dispose();

menuJson = menuJson.TrimEnd(',');

menuJson += "]}";

menuJson = menuJson.Trim();

return requstZmToCreatMent(menuJson);

}

else

{

return false;

}

}

3、獲取到menujson字符串后調(diào)用微信接口創(chuàng)建菜單,需先獲取assess token,有關(guān)assess token獲取可參考:獲取AccessToken

///

/// 向微信服務(wù)器請(qǐng)求創(chuàng)建自定義菜單

///

///

///

///

private bool requstZmToCreatMent(string jsonStr)

{

try

{

var AccessToken = "";//accesstoken需例外獲取,一般可開始時(shí)獲取后存數(shù)據(jù)庫,下次從數(shù)據(jù)庫取,注意accesstoken有效期為7200秒

//聲明一個(gè)HttpWebRequest請(qǐng)求

string interfaceUrl = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" + AccessToken;

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(interfaceUrl);

//設(shè)置連接超時(shí)時(shí)間

request.Timeout = 30000;

request.KeepAlive = true;

Encoding encodeType = Encoding.GetEncoding("UTF-8");

request.Headers.Set("Pragma", "no-cache");

request.Method = "POST";

request.ContentType = "application/x-www-form-urlencoded";

request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; Maxthon; .NET CLR 1.1.4322); Http STdns";

request.Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";

request.CookieContainer = new CookieContainer();

byte[] Bytes = encodeType.GetBytes(jsonStr);

request.ContentLength = Bytes.Length;

request.AllowAutoRedirect = true;

//發(fā)送數(shù)據(jù)

using (Stream writer = request.GetRequestStream())

{

writer.Write(Bytes, 0, Bytes.Length);

writer.Close();

}

StringBuilder strb = new StringBuilder();

//接收數(shù)據(jù)

using (Stream reader = request.GetResponse().GetResponseStream())

{

StreamReader sr = new StreamReader(reader, encodeType);

strb.Append(sr.ReadToEnd());

sr.Close();

reader.Close();

}

if ((strb.ToString().IndexOf("\"errcode\":42001") != -1) || (strb.ToString().IndexOf("\"errcode\":40001") != -1) || (strb.ToString().IndexOf("\"errcode\":40014") != -1) || (strb.ToString().IndexOf("\"errcode\":41001") != -1)) //access_token錯(cuò)誤

{

// AccessToken = getAccessToken();

getzmAccessToken();

return requstZmToCreatMent(jsonStr);

}

else

{

if (strb.ToString() == "{\"errcode\":0,\"errmsg\":\"ok\"}")

{

return true;

}

else

{

return false;

}

}

}

catch (Exception exp)

{

return false;

}

}

總結(jié)

以上所述是小編給大家介紹的微信公眾號(hào)開發(fā)之設(shè)置自定義菜單實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

總結(jié)

以上是生活随笔為你收集整理的java 微信自定义菜单开发_微信公众号开发之设置自定义菜单实例代码【java版】...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。