微信创建菜单

资源下载:https://download.csdn.net/download/qq_34167863/10490975


public class MenuManager {


public static void main(String[] args) {
// 调用接口获取access_token
AccessToken at = WeChatUtil.getAccessToken();


if (null != at) {
// 调用接口创建菜单
int result = WeChatUtil.createMenu(getMenu(), at.getToken());


// 判断菜单创建结果
if (0 == result)
System.out.print("菜单创建成功!");
else
System.out.print("菜单创建失败,错误码:" + result);
}
}


/**
* 组装菜单数据
*/
public static Menu getMenu() {
CommonViewButton btn11 = new CommonViewButton();
btn11.setName("按钮11");
btn11.setType(WeChatConfig.MENU_BUTTON_TYPE_VIEW);
btn11.setUrl("https://www.baidu.com/");


CommonViewButton btn12 = new CommonViewButton();
btn12.setName("按钮12");
btn12.setType(WeChatConfig.MENU_BUTTON_TYPE_VIEW);
btn12.setUrl("https://www.baidu.com/");


CommonViewButton btn21 = new CommonViewButton();
btn21.setName("按钮21");
btn21.setType(WeChatConfig.MENU_BUTTON_TYPE_VIEW);
btn21.setUrl("https://www.baidu.com/");


CommonViewButton btn31 = new CommonViewButton();
btn31.setName("按钮31");
btn31.setType(WeChatConfig.MENU_BUTTON_TYPE_VIEW);
btn31.setUrl("https://www.baidu.com/");


ComplexButton mainBtn1 = new ComplexButton();
mainBtn1.setName("按钮1");
mainBtn1.setSub_button(new Button[] { btn11, btn12 });


/**
* 这是公众号xiaoqrobot目前的菜单结构,每个一级菜单都有二级菜单项<br>
*/
Menu menu = new Menu();
menu.setButton(new Button[] { mainBtn1, btn21, btn31 });


return menu;

}


/**
* 创建菜单
*
* @param menu
*            菜单实例
* @param accessToken
*            有效的access_token
* @return 0表示成功,其他值表示失败
*/
public static int createMenu(Menu menu, String accessToken) {
int result = 0;


// 拼装创建菜单的url
String requestUrl = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN".replace("ACCESS_TOKEN", accessToken);


// 将菜单对象转换成json字符串
String jsonMenu = JSONObject.fromObject(menu).toString();


// 调用接口创建菜单
JSONObject jsonObject = httpRequest(requestUrl, "POST", jsonMenu);


if (null != jsonObject) {
if (0 != jsonObject.getInt("errcode")) {
result = jsonObject.getInt("errcode");
System.out
.println("创建菜单失败 errcode:{} errmsg:{} 的 errcode = " + jsonObject.getInt("errcode") + "---- errmsg =" + jsonObject.getString("errmsg"));
}
}
return result;
}


/**
* 发起https请求并获取结果

* @param requestUrl
*            请求地址
* @param requestMethod
*            请求方式(GET、POST)
* @param outputStr
*            提交的数据
* @return JSONObject(通过JSONObject.get(key)的方式获取json对象的属性值)
*/
public static JSONObject httpRequest(String requestUrl, String requestMethod, String outputStr) {
JSONObject jsonObject = null;
StringBuffer buffer = new StringBuffer();
try {
// 创建SSLContext对象,并使用我们指定的信任管理器初始化
TrustManager[] tm = { new WeChatX509TrustManager() };
SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
sslContext.init(null, tm, new java.security.SecureRandom());
// 从上述SSLContext对象中得到SSLSocketFactory对象
SSLSocketFactory ssf = sslContext.getSocketFactory();


URL url = new URL(requestUrl);
HttpsURLConnection httpUrlConn = (HttpsURLConnection) url.openConnection();
httpUrlConn.setSSLSocketFactory(ssf);


httpUrlConn.setDoOutput(true);
httpUrlConn.setDoInput(true);
httpUrlConn.setUseCaches(false);
// 设置请求方式(GET/POST)
httpUrlConn.setRequestMethod(requestMethod);


if ("GET".equalsIgnoreCase(requestMethod)) {
httpUrlConn.connect();
}


// 当有数据需要提交时
if (null != outputStr) {
OutputStream outputStream = httpUrlConn.getOutputStream();
// 注意编码格式,防止中文乱码
outputStream.write(outputStr.getBytes("UTF-8"));
outputStream.close();
}


// 将返回的输入流转换成字符串
InputStream inputStream = httpUrlConn.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);


String str = null;
while ((str = bufferedReader.readLine()) != null) {
buffer.append(str);
}
bufferedReader.close();
inputStreamReader.close();


// 释放资源
inputStream.close();
inputStream = null;
httpUrlConn.disconnect();
jsonObject = JSONObject.fromObject(buffer.toString());


} catch (ConnectException ce) {
System.out.println("微信服务器连接超时");
ce.printStackTrace();


} catch (Exception e) {
System.out.println("HTTPS请求出错");
e.printStackTrace();
}
return jsonObject;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值