首页>代码>Java通过Spring MVC开发的微信公众平台开发框架>/wechat-develop-framework-master/src/wechat-framework/src/main/java/com/xgzhang/wechat/framework/MenuUpdater.java
package com.xgzhang.wechat.framework;

import java.io.StringWriter;

import org.apache.http.HttpResponse;
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.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializationConfig;
import org.json.JSONObject;

import com.xgzhang.wechat.framework.domain.menu.ButtonWrap;

public class MenuUpdater {
	private String _appId;
	private String _secret;
	private MenuFactory _menuFactory;
	
	public MenuUpdater(String appId, String secret, MenuFactory menuFactory){
		this._appId = appId;
		this._secret = secret;
		this._menuFactory = menuFactory;
	}
	
	public int update() throws Exception {
		// Access token
		HttpGet tokenHttpGet = new HttpGet(String.format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s", this._appId, this._secret));
		HttpClient httpClient = new DefaultHttpClient();
		HttpResponse tokenResponse = httpClient.execute(tokenHttpGet);
		byte[] tokenBytes = EntityUtils.toByteArray(tokenResponse.getEntity());
		String token = (new JSONObject(new String(tokenBytes, "utf8"))).getString("access_token");

		// Delete old menus
		HttpGet deleteHttpGet = new HttpGet("https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=" + token);
		HttpResponse deleteResponse = httpClient.execute(deleteHttpGet);
		byte[] deleteBytes = EntityUtils.toByteArray(deleteResponse.getEntity());
		int errorCode = (new JSONObject(new String(deleteBytes, "utf8"))).getInt("errcode");
		if(errorCode != 0)
			return errorCode;

		// Create new menus
		HttpPost createPost = new HttpPost("https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" + token);
		StringEntity contentEntity = new StringEntity(createMenuJsonString());
		createPost.setEntity(contentEntity);
		HttpResponse createResponse = httpClient.execute(createPost);
		byte[] createBytes = EntityUtils.toByteArray(createResponse.getEntity());
		errorCode = (new JSONObject(new String(createBytes, "utf8"))).getInt("errcode");
		return errorCode;
	}
	
	private String createMenuJsonString() throws Exception {
		String jsonStr = null;
		ObjectMapper mapper = new ObjectMapper();
		mapper.disable(SerializationConfig.Feature.WRITE_EMPTY_JSON_ARRAYS);
		mapper.disable(SerializationConfig.Feature.WRITE_NULL_PROPERTIES);
		StringWriter sw = new StringWriter();
		JsonGenerator gen = new JsonFactory().createJsonGenerator(sw);
		mapper.writeValue(gen, new ButtonWrap(this._menuFactory.generateMenu()));
		gen.close();
		jsonStr = sw.toString();
		return jsonStr;
	}
}
最近下载更多
HANCW  LV5 2022年3月14日
lwp011  LV27 2021年11月4日
tanyc2008  LV6 2021年6月17日
我就我的  LV7 2021年4月18日
1763157114  LV15 2021年3月29日
hellow1  LV3 2021年1月31日
皇朝灬焱轩  LV9 2021年1月25日
zt3631877  LV9 2020年12月10日
HUANG888  LV6 2020年9月3日
aaa最代码  LV13 2020年8月21日
最近浏览更多
suxin123_123  LV5 2月3日
263648  LV6 2022年12月26日
gch666  LV6 2022年12月22日
lywang  LV7 2022年12月6日
long123_356  LV4 2022年11月30日
develop  LV10 2022年11月16日
moneyla  LV5 2022年10月11日
暂无贡献等级
ljt289917726  LV3 2022年8月29日
夜上清元  LV8 2022年6月16日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友