微信模板例子见https://mp.weixin.qq.com/advanced/tmplmsg?action=faq&token=2033299810&lang=zh_CN
第一种方式拼接数据,按照字符串拼接的方式来拼接数据
public void sendMessage(String openId, String accessToken, String first, String telephone, String name, Date time) { DateFormat dfDay = new SimpleDateFormat("yyyy年MM月dd日"); DateFormat dfTime = new SimpleDateFormat("hh:mm"); String dayFormat = dfDay.format(time); String timeFormat = dfTime.format(time); String requestparams = "{\"touser\":\"" + openId + "\",\"template_id\":\"Fv0OUSWyrSjZfnXFAwGkkJacK3gz-oZwm3FXw4EAFQE\",\"data\":{\"first\":{\"value\":\"" + first + "\"},\"keyword1\":{\"value\":\"" + name + "\"},\"keyword2\":{\"value\":\"" + telephone + "\"},\"keyword3\":{\"value\":\"" + dayFormat + "\"},\"keyword4\":{\"value\":\"" + timeFormat + "\"},\"remark\":{\"value\":\"感谢您的使用\"}}}";
String responseInfo = HttpUtil.sendPostJsonNotSplitParam( "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken, requestparams); System.out.println(responseInfo); }
第二种方式拼接,使用gson将对象转换成json字符public String sendMessage(HttpServletRequest request HttpServletResponse response, ModelMap model) {
SendMessageVo vo = new SendMessageVo(); Data data = new Data(); SendFirst first = new SendFirst(); first.setValue("您好,您的订单已确认支付,感谢您的购买,稍后,工作人员将联系您确认相关事宜"); data.setFirst(first); SendOrderID orderID = new SendOrderID(); orderID.setValue("112336"); data.setOrderID(orderID); SendPkgName pkgName = new SendPkgName(); pkgName.setValue("购买测试"); data.setPkgName(pkgName); SendRemark remark = new SendRemark(); remark.setValue("备注"); data.setRemark(remark); SendTakeOffDate takeOffDate = new SendTakeOffDate(); takeOffDate.setValue(new SimpleDateFormat("yyyy-MM-dd") .format(new Date())); data.setTakeOffDate(takeOffDate); vo.setData(data); vo.setTemplate_id(“1ebK9dYnuXgRniFS6aQ5xzu_KTdvEOjVpn8azwz6Xzw”); WxWebauthUserinfo userInfo = (WxWebauthUserinfo) request .getAttribute(Constant.LOGIN_USER); vo.setTouser(userInfo.getOpenId()); Map<String, String> map = wxAccessTokenService.getAccesToken(); String accessToken = map.get("accessToken"); String add_url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken; String json = new Gson().toJson(vo); System.out.println("************************"); System.out.println(json); System.out.println("************************"); String sendPostJsonNotSplitParam = HttpUtil.sendPostJsonNotSplitParam( add_url, json);
发送链接的方法
public static String sendPostJsonNotSplitParam(String url, String param) { PrintWriter out = null; BufferedReader in = null; String result = ""; try { URL realUrl = new URL(url); // 打开和URL之间的连接 URLConnection conn = realUrl.openConnection(); // 设置通用的请求属性 conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection", "Keep-Alive"); conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); // 发送POST请求必须设置如下两行 conn.setDoOutput(true); conn.setDoInput(true); // 获取URLConnection对象对应的输出流 out = new PrintWriter(conn.getOutputStream()); // 发送请求参数 if (StringUtils.isNotEmpty(param) && !param.equals("null")) { out.print(param); } // flush输出流的缓冲 out.flush(); // 定义BufferedReader输入流来读取URL的响应 in = new BufferedReader( new InputStreamReader(conn.getInputStream())); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { System.out.println("发送 POST 请求出现异常!" + e); e.printStackTrace(); } // 使用finally块来关闭输出流、输入流 finally { try { if (out != null) { out.close(); } if (in != null) { in.close(); } } catch (IOException ex) { ex.printStackTrace(); } } return result; }