java 微信自定义菜单开发_微信公众号开发之设置自定义菜单实例代码【java版】...
本實(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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 删除文件失败_java 文件
- 下一篇: java循环语句三角形_JAVA——程序