首先我要说明一下,大家在微信开发中,一定会遇到怎么给顾客发送客服消息的问题,客服消息,简单来讲就是人工服务,区别于自动回复。
大家看过微信开发API的话,就明白了,我们的Controller接收前端页面传过来的JSON字符串,然后我们再把这个字符串发送给微信服务器。
这之中,解析JSON字符串有两种方案。
第一种,我们可以根据对应的JSON字符串,构建对应的JAVA类,然后用阿里巴巴的JSONObject工具类JSONObject.parseObject(text, clazz)方法,将JSON字符串解析成JAVA类,然后再JSONObject.toJSON(javaObject),这样就能得到JSON对象,然后将JSON字符串发送给微信服务器。这样太麻烦了,其实我第一次就是这么做的。
第二种我们可以直接从请求流中读取JSON字符串。直接上代码。
public Result sendTextMsg(HttpServletRequest request) throws AppException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream())); StringBuffer sb = new StringBuffer(""); while (br.ready()) { sb.append(br.readLine()); } br.close(); String params = sb.toString(); logger.debug("返回的文本JSON:{}",params); String resJson = HttpsServletClient.send(ServerURL.getServiceAccountSendMessageURL(accessServer.getAccessToken()), params,"POST"); JSONObject jsonObj = JSONObject.parseObject(resJson); logger.debug("返回的JSON:{}",resJson); Result result = null; if("0".equals(jsonObj.get("errcode").toString())) { result = new Result("消息发送成功!"); } else { result = new Result(jsonObj.get("errmsg").toString()); result.setErrorCode(Integer.parseInt(jsonObj.get("errcode").toString())); } return result; }
