当前位置:   article > 正文

java实现微信公众号群发文本消息_java 怎么设置公众号草稿已群发

java 怎么设置公众号草稿已群发

微信开发平台:微信公众号开发文档

废话不多说,直接上代码

1、Controller层调用代码

	/**
	 * 群发消息
	 * @param user
	 * @return
	 */
	@RequestMapping(value="/groupMessage",method=RequestMethod.POST,produces ="application/json;charset=utf-8")
	public JSONObject Message(@RequestBody(required=false)JSONObject obje) {
		JSONObject result=new JSONObject();
		logger.info("-----------开始群发------------");
		String content=obje.getString("content");//群发内容
		Integer code=wechatMsg.GroupMessage(wechatMsg.getToken(),content);//群发消息
		if(code==0) {
			result.put("code",0);
			result.put("data","群发成功");
		}else {
			result.put("code",1201);
			result.put("data","微信群发消息失败");
		}
		return result;
	}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

2、工具类WechatMsg代码,下面以群发文本消息为例,如果是实现群发文本消息(群发其它消息,如图片视频等,请参考微信公众号开发文档),可以直接复制,只需要修改XXX的地方代码就可以了

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Component;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.demo.entity.DataEntity;
@Component
public class WechatMsg {	
	/**
	 * 获取token
	 * 
	 * @return token
	 */
	public String getToken() {
		// 授予形式
		String grant_type = "client_credential";
		//应用ID
		String appid = "XXXXXXXXXXXXXXXXXXXXXXXXX";
		//密钥
		String secret = "XXXXXXXXXXXXXXXXXXXXXXXXX";
		// 接口地址拼接参数
		String getTokenApi = "https://api.weixin.qq.com/cgi-bin/token?grant_type=" + grant_type + "&appid=" + appid
				+ "&secret=" + secret;
		String tokenJsonStr = doGetPost(getTokenApi, "GET", null);
		JSONObject tokenJson = JSONObject.parseObject(tokenJsonStr);
		String token = tokenJson.get("access_token").toString();
		System.out.println("获取到的TOKEN : " + token);
		return token;
	}
	/***
	 * 群发文本消息
	 * @param token
	 */
	public Integer GroupMessage(String token,String content) {
		// 接口地址
		String sendMsgApi = "https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token="+token;		
		 //整体参数map
        Map<String, Object> paramMap = new HashMap<String, Object>();
        //相关map
        Map<String, Object> dataMap1 = new HashMap<String, Object>();
        Map<String, String> dataMap2 = new HashMap<String, String>();
        dataMap1.put("is_to_all",true);//用于设定是否向全部用户发送,值为true或false,选择true该消息群发给所有用户,选择false可根据tag_id发送给指定群组的用户
        dataMap1.put("tag_id",1);//群发到的标签的tag_id,参见用户管理中用户分组接口,若is_to_all值为true,可不填写tag_id
        dataMap2.put("content",content);//要推送的内容
        paramMap.put("filter",dataMap1);//用于设定图文消息的接收者
        paramMap.put("text", dataMap2);//文本内容
        paramMap.put("msgtype","text");//群发的消息类型,图文消息为mpnews,文本消息为text,语音为voice,音乐为music,图片为image,视频为video,卡券为wxcard
        String back=doGetPost(sendMsgApi,"POST",paramMap);
        System.out.println("群发返回:"+back);
        JSONObject jsonObject =JSONObject.parseObject(back);//String转JSONObject,
        Integer re=jsonObject.getInteger("errcode");
        return re;
	}
    /**
     * 调用接口 post
     * @param apiPath
     */
    public String doGetPost(String apiPath,String type,Map<String,Object> paramMap){
        OutputStreamWriter out = null;
        InputStream is = null;
        String result = null;
        try{
            URL url = new URL(apiPath);// 创建连接
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setDoOutput(true);
            connection.setDoInput(true);
            connection.setUseCaches(false);
            connection.setInstanceFollowRedirects(true);
            connection.setRequestMethod(type) ; // 设置请求方式
            connection.setRequestProperty("Accept", "application/json"); // 设置接收数据的格式
            connection.setRequestProperty("Content-Type", "application/json"); // 设置发送数据的格式
            connection.connect();
            if(type.equals("POST")){
                out = new OutputStreamWriter(connection.getOutputStream(), "UTF-8"); // utf-8编码
                out.append(JSON.toJSONString(paramMap));
                out.flush();
                out.close();
            }
            // 读取响应
            is = connection.getInputStream();
            int length = (int) connection.getContentLength();// 获取长度
            if (length != -1) {
                byte[] data = new byte[length];
                byte[] temp = new byte[512];
                int readLen = 0;
                int destPos = 0;
                while ((readLen = is.read(temp)) > 0) {
                    System.arraycopy(temp, 0, data, destPos, readLen);
                    destPos += readLen;
                }
                result = new String(data, "UTF-8"); // utf-8编码
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return  result;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109

3、如果你的需求是群发,那么到这里就结束了,如果需求是分组发(也就是is_to_all设为false时),需要先获取标签id,可以调用下面方法获取标签id,获取到的标签id填入上面代码中的tag_id变量。注意:下面代码中name的value值不能和公众号中已存在的标签名一样,调用下面代码成功后才能在公众号生成新标签

/**
	 * 调用这个方法获取标签ID后,还要在公众号上给标签添加用户
	 * @param token
	 * @return
	 */
	public Integer getTab(String token) {
		String sendMsgApi = "https://api.weixin.qq.com/cgi-bin/tags/create?access_token="+token;
		//整体参数map
        Map<String, Object> paramMap = new HashMap<String, Object>();
        //相关map
        Map<String, Object> dataMap1 = new HashMap<String, Object>();
        dataMap1.put("name","test6");//这里写你要创建的标签名
        paramMap.put("tag",dataMap1);
		String back=doGetPost(sendMsgApi,"POST",paramMap);
		System.out.println("请求获取标签接口返回:"+back);
		JSONObject jsonObject =JSONObject.parseObject(back).getJSONObject("tag");//String转JSONObject,
		Integer id=-1;//设id初始值为-1,如果最后返回id还是-1,代表获取标签失败
		if(jsonObject!=null) {
			id=jsonObject.getInteger("id");
		}
		return id;
	}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

有什么不懂或建议可以直接评论,我会尽快解决

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/178554
推荐阅读
相关标签
  

闽ICP备14008679号