预览接口【订阅号与服务号认证后均可用】
开发者可通过该接口发送消息给指定用户,在手机端查看消息的样式和排版。
为了满足第三方平台开发者的需求,在保留对openID预览能力的同时,
增加了对指定微信号发送预览的能力,但该能力每日调用次数有限制(100次)
,请勿滥用。

import java.util.HashMap;
import java.util.Map;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.ByteArrayRequestEntity;
import org.apache.commons.httpclient.methods.PostMethod;
import org.springframework.stereotype.Service;

import com.google.gson.Gson;

import net.sf.json.JSONObject;
@Service
public class WX_SendMsg{
	
	
	public static void main(String[] args) {
		messTextMessage("群发");
	}
	
	/**
	 * 群发文本消息
	 * @param openId
	 * @param text
	 * @return
	 */
	 public static boolean messTextMessage(String text) {
	        try {
	            String resp = "";//响应
	            String openId="oLD9puE-fxhKmn6wYA_au4uVSDHXN";
	    		String accessToken="";
	            String reqUrl = "https://api.weixin.qq.com/cgi-bin/message/mass/preview?access_token="+accessToken;
	            try {
	                // 构造httprequest设置
	                HttpClient client = new HttpClient();
	                PostMethod request = new PostMethod(reqUrl);
	                // 添加request headers
	                request.addRequestHeader("Content-type", "application/json");
	                request.addRequestHeader("Accept", "application/json");

	                Map<String, Object> param = new HashMap<String, Object>();
	                param.put("touser", openId);
	                param.put("msgtype", "text");
	                Map<String, Object> content =  new HashMap<String, Object>();
	                content.put("content", text);
	                param.put("text",content);

	                String json = new Gson().toJson(param);
	                request.setRequestEntity(new ByteArrayRequestEntity(json.getBytes("UTF-8")));  

	                client.executeMethod(request);  
	                resp = request.getResponseBodyAsString();
	                
	                JSONObject jsonObject = JSONObject.fromObject(resp);
	                WX_ReturnMsg wX_ReturnMsg=(WX_ReturnMsg)JSONObject.toBean(jsonObject, WX_ReturnMsg.class);
	                System.out.println("wX_ReturnMsg=="+wX_ReturnMsg.toString());
	            } catch (Exception e) {
	                System.out.println("发送POST请求出现异常!" + e);
	                e.printStackTrace();
	            } 

	        } catch (Exception e) {
	            e.printStackTrace();
	        }
	        return false;
	    }
}



public class WX_ReturnMsg {
	private String errcode;
	private String errmsg;
	private String msg_id;
	public String getErrcode() {
		return errcode;
	}
	public void setErrcode(String errcode) {
		this.errcode = errcode;
	}
	public String getErrmsg() {
		return errmsg;
	}
	public void setErrmsg(String errmsg) {
		this.errmsg = errmsg;
	}
	public String getMsg_id() {
		return msg_id;
	}
	public void setMsg_id(String msg_id) {
		this.msg_id = msg_id;
	}
	
	public String toString() {
		return "errcode:"+errcode+";errmsg="+errmsg+";msg_id:"+msg_id;
	}

}