用java开发微信服务号的自定义菜单时,菜单的json数据中含有汉字,微信反馈:
{"errcode":40033,"errmsg":"invalid charset. please check your request, if include \\uxxxx will create fail! hint: [edZHKa0915vr21]"}
如何解决?急等
相关代码:
1 public static void createMenu(String accessToken){ 2 Logger logger = Logger.getLogger(WxMenuManager.class.getSimpleName()); 3 4 logger.info("[WX INIT ] CREATEMENU"); 5 6 CloseableHttpClient httpClient = HttpClientBuilder.create().build(); 7 HttpResponse httpResponse = null; 8 9 10 11 HttpPost postRequest = new HttpPost("https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" + accessToken); 12 13 14 15 List<Object> buttonList = new ArrayList<Object>(); 16 logger.info("[WX INIT ] CREATEMENU before buttonList.add"); 17 buttonList.add(new WxMenuButton("view", "菜单一", "https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=http%3A%2F%2Fwww.wangyili.com%2Fmediator&response_type=code&scope=snsapi_base&state=talents-index#wechat_redirect")); 18 buttonList.add(new WxMenuButton("view", "菜单二", "https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=http%3A%2F%2Fwww.wangyili.com%2Fmediator&response_type=code&scope=snsapi_base&state=jobs-index#wechat_redirect")); 19 logger.info("[WX INIT ] CREATEMENU before subButtonList.add"); 20 List<WxMenuButton> subButtonList = new ArrayList<WxMenuButton>(); 21 subButtonList.add(new WxMenuButton("view","子菜单一","https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=http%3A%2F%2Fwww.wangyili.com%2Fmediator&response_type=code&scope=snsapi_base&state=activities-index#wechat_redirect")); 22 subButtonList.add(new WxMenuButton("view","子菜单二","https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=http%3A%2F%2Fwww.wangyili.com%2Fmediator&response_type=code&scope=snsapi_base&state=promotions-index#wechat_redirect")); 23 subButtonList.add(new WxMenuButton("view", "子菜单三", "https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=http%3A%2F%2Fwww.wangyili.com%2Fmediator&response_type=code&scope=snsapi_base&state=personal#wechat_redirect")); 24 logger.info("[WX INIT ] CREATEMENU before new WxMenuSubButton"); 25 WxMenuSubButton wxMenuSubButton = new WxMenuSubButton("菜单三", subButtonList); 26 logger.info("[WX INIT ] CREATEMENU after WxMenuSubButton"); 27 buttonList.add(wxMenuSubButton); 28 logger.info("[WX INIT ] CREATEMENU after buttonList.add(wxMenuSubButton)"); 29 WxMenuList wxMenu = new WxMenuList(buttonList); 30 logger.info("[WX INIT ] CREATEMENU after WxMenuList wxMenu = new WxMenuList(buttonList); "); 31 Gson gson = new Gson(); 32 String wxMenuJson = gson.toJson(wxMenu); 33 34 logger.info("[WX INIT ] wxMenuJson " + wxMenuJson); 35 36 37 38 StringEntity se = new StringEntity(wxMenuJson,"UTF-8"); 39 se.setContentType("text/json"); 40 se.setContentEncoding("UTF-8"); 41 42 postRequest.setEntity(se); 43 try { 44 httpResponse = httpClient.execute(postRequest); 45 handleResponse(httpResponse.getEntity().getContent()); 46 } catch (Exception e) { 47 e.printStackTrace(); 48 } 49 }