使用JAVA后端去自定义创建菜单,微信公众号开发文档中提供了API:
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141013,请大家认真的观看文档的中的信息,
创建菜单中有一些要注意的地方:
1、自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。
2、一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“…”代替。
3、创建自定义菜单后,菜单的刷新策略是,在用户进入公众号会话页或公众号profile页时,如果发现上一次拉取菜单的请求在5分钟以前,就会拉取一下菜单,如果菜单有更新,就会刷新客户端的菜单。测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。
这些可以说是创建菜单中的格式或者是规则,下面是菜单的类型,每个类型代表给他创建的菜单中的功能是不一样的,请认真查看文档
代码实例:
HttpUtils.java(发送POST请求):
import com.alibaba.fastjson.JSONObject;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.net.URLDecoder;
/**
* <p>User: qrn
* <p>Date: 14-1-28
* <p>Version: 1.0
* 描述: http请求的工具类
*/
public class HttpUtils {
private static Logger logger = LoggerFactory.getLogger(HttpUtils.class); //日志记录
/**
* httpPost
*
* @param url 路径
* @param jsonParam 参数
* @return JSONObject
*/
public static JSONObject httpPost(String url, String jsonParam) {
return httpPost(url, jsonParam, false);
}
/**
* post请求
*
* @param url url地址
* @param param 参数
* @param noNeedResponse 不需要返回结果
* @return JSONObject
*/
public static JSONObject httpPost(String url, String param, boolean noNeedResponse) {
//post请求返回结果
HttpClient httpClient = HttpClients.createDefault();
JSONObject jsonResult = null;
HttpPost method = new HttpPost(url);
try {
if (null != param) {
//解决中文乱码问题
StringEntity entity = new StringEntity(param, "utf-8");
entity.setContentEncoding("UTF-8");
entity.setContentType("application/json");
method.setEntity(entity);
}
HttpResponse result = httpClient.execute(method);
url = URLDecoder.decode(url, "UTF-8");
/**请求发送成功,并得到响应**/
if (result.getStatusLine().getStatusCode() == 200) {
String str = "";
try {
/**读取服务器返回过来的json字符串数据**/
str = EntityUtils.toString(result.getEntity());
System.out.println(str);
if (noNeedResponse) {
return null;
}
/**把json字符串转换成json对象**/
jsonResult = JSONObject.parseObject(str);
} catch (Exception e) {
logger.error("post请求提交失败:" + url, e);
}
}
} catch (IOException e) {
logger.error("post请求提交失败:" + url, e);
}
return jsonResult;
}
}
创建菜单的方法(SpringMvc):
/**
* 创建自定义菜单:
*/
@RequestMapping("/getAccount_txt")
@ResponseBody
public void getAccount_txt() {
String access_token = accountsService.Accountaccess_token(); //这里是获取的TOken接口
String url=WeChatTools.create+access_token; //这里是创建菜单的接口和token拼接 https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN
System.out.println("发送的url"+url);
String sun="{\r\n" +
" \"button\":[\r\n" +
" { \r\n" +
" \"type\":\"click\",\r\n" +
" \"name\":\"今日歌曲\",\r\n" +
" \"key\":\"V1001_TODAY_MUSIC\"\r\n" +
" },\r\n" +
" {\r\n" +
" \"name\":\"菜单\",\r\n&#