微信小程序,公众号发送模板消息(java)

来源:互联网 发布:php书籍 编辑:程序博客网 时间:2024/05/17 03:38

原文:http://www.aichengxu.com/java/4357322.htm


1.封装微信模板消息类:

public class WxTemplate {

private String template_id;

private String touser;

private String url;

private String topcolor;

private Map<String,TemplateData> data;

public String getTemplate_id() {

return template_id;

}

public void setTemplate_id(String template_id) {

this.template_id = template_id;

}

public String getTouser() {

return touser;

}

public void setTouser(String touser) {

this.touser = touser;

}

public String getUrl() {

return url;

}

public void setUrl(String url) {

this.url = url;

}

public String getTopcolor() {

return topcolor;

}

public void setTopcolor(String topcolor) {

this.topcolor = topcolor;

}

public Map<String,TemplateData> getData() {

return data;

}

public void setData(Map<String,TemplateData> data) {

this.data = data;

}

}

2.封装模板数据

public class TemplateData {

private String value;

private String color;

public String getValue() {

return value;

}

public void setValue(String value) {

this.value = value;

}

public String getColor() {

return color;

}

public void setColor(String color) {

this.color = color;

}

}

3.填充模板消息数据

WxTemplate t = new WxTemplate();

t.setUrl("");

t.setTouser(open_id));

t.setTopcolor("#000000");

t.setTemplate_id(模板ID);

Map<String,TemplateData> m = new HashMap<String,TemplateData>();

TemplateData first = new TemplateData();

first.setColor("#000000");

first.setValue("***标题***");

m.put("first", first);

TemplateData name = new TemplateData();

name.setColor("#000000");

name.setValue("***名称***");

m.put("name", name);

TemplateData remark = new TemplateData();

remark.setColor("blue");

remark.setValue("***备注说明***");

m.put("Remark", remark);

t.setData(m);

4.使用JSONObject将类转化成JSON格式

JSONObject.fromObject(template).toString()); //此处你应该代入自己的template

5.调用发送接口:

public static JSONObject httpRequest(String requestUrl, String requestMethod, String outputStr) {

JSONObject jsonObject = null;

StringBuffer buffer = new StringBuffer();

try {

// 创建SSLContext对象,并使用我们指定的信任管理器初始化

TrustManager[] tm = { new MyX509TrustManager() };

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) {

ce.printStackTrace();

} catch (Exception e) {

e.printStackTrace();

}

return jsonObject;

}

获取发送反回值:

JSONObject jsonobj = httpRequest(“https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN”, "POST",JSONObject.fromObject(t).toString())

注:以上方法我已在自己的微信公众号试过,可以正常运行发送模版消息,模版id可根据具体业务修改使用。