`
zhengshuo
  • 浏览: 136672 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

微信公众号发送模板消息

 
阅读更多
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([color=red]template[/color]).toString())


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

jsonobj为发送返回值
分享到:
评论
4 楼 Dear疼你 2015-11-16  
郑云飞 写道
你好,请问,按照你的代码,为什么Android手机可以收到发送的模板消息内容,而ios手机发送的内容为空白呢?

貌似ios手机不支持"blue"这种方式的颜色处理,换成二进制颜色就可以了
3 楼 di1984HIT 2015-09-18  
学习了。。。
2 楼 zxs6587 2015-09-07  
没有开启开发模式可以使用此接口发送模板消息吗????急求!!
1 楼 郑云飞 2015-07-31  
你好,请问,按照你的代码,为什么Android手机可以收到发送的模板消息内容,而ios手机发送的内容为空白呢?

相关推荐

Global site tag (gtag.js) - Google Analytics