根据开发文档可知,只要使用POST方式提交固定格式的json字符串到那个地址即可。这里我写的是最简单的文本

第一步:建立对应的实体类。

 package cn.sp.bean;

 import java.util.List;
import java.util.Map; /**群发消息
* Created by 2YSP on 2017/7/12.
*/
public class MassMessage {
private List<String> touser;
private String msgtype;
private Map<String,Object> text ; public List<String> getTouser() {
return touser;
} public void setTouser(List<String> touser) {
this.touser = touser;
} public String getMsgtype() {
return msgtype;
} public void setMsgtype(String msgtype) {
this.msgtype = msgtype;
} public Map<String, Object> getText() {
return text;
} public void setText(Map<String, Object> text) {
this.text = text;
}
}

第二步:编写测试类:

 package cn.sp.test;

 import cn.sp.bean.AccessToken;
import cn.sp.bean.MassMessage;
import cn.sp.utils.WeiXinUtil;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import net.sf.json.JSONObject; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; /**
* Created by 2YSP on 2017/7/12.
*/
public class Test {
public static final String URL = "https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=ACCESS_TOKEN"; public static void main(String[] args) {
//获取token
AccessToken token = WeiXinUtil.getAccessToken();
String url = URL.replace("ACCESS_TOKEN", token.getToken()); MassMessage massMessage = new MassMessage();
List<String> list = new ArrayList<String>();
list.add("o2fVHwF3EYXzhWa9a_UNlC5TNrEk");
list.add("o2fVHwF3EYXzhWa9a_UNlC5TNrEk");
massMessage.setTouser(list);
massMessage.setMsgtype("text");
Map<String, Object> map = new HashMap<String, Object>();
map.put("content", "hello,<a href='https://www.baidu.com'>点我去百度了</a>");
massMessage.setText(map); Gson gson = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create();
String str = gson.toJson(massMessage);
System.out.println("str:"+str); JSONObject jso = WeiXinUtil.doPostStr(url, str);
System.out.println(jso.toString());
}
}

这里是使用httpClient发起的请求,gson将对象转换为json字符串。

注意:openId至少为两个,否则返回报错不能发送,如果只有一个openId的话可以写两遍。

效果如图:

【微信公众号开发】根据openId群发消息的更多相关文章

  1. .NET微信公众号开发-6.0模板消息

    一.前言 为了保证用户不受到骚扰,在开发者出现需要主动提醒.通知用户时,才允许开发者在公众平台网站中模板消息库中选择模板,选择后获得模板ID,再根据模板 ID向用户主动推送提醒.通知消息.这个意思也就 ...

  2. 微信公众号开发 获取openid时报错40029 invalid code 问题的解决

    {"errcode":40029,"errmsg":"invalid code, hints: [ req_id: aELCyY4ce-WOFLAa ...

  3. Python webpy微信公众号开发之 回复图文消息

    新建图文回复模板reply_pictext.xml: $def with (toUser,fromUser,createTime,title1,description1,picurl1,url1)&l ...

  4. .net微信公众号开发——群发消息

    作者:王先荣    本文将介绍微信公众号开发中用于群发消息的类MassMessage,包括:(1)MassMessage类:(2)群发:(3)删除:(4)预览:(5)查询发送状态:(6)接收推送群发结 ...

  5. 微信公众号开发之网页中及时获取当前用户Openid及注意事项

    目录 (一)微信公众号开发之VS远程调试 (二)微信公众号开发之基础梳理 (三)微信公众号开发之自动消息回复和自定义菜单 (四)微信公众号开发之网页授权获取用户基本信息 (五)微信公众号开发之网页中及 ...

  6. 微信公众号开发之根据OpenID列表群发(十四)

    上一篇我们讲述了<微信公众号开发之根据标签进行群发(十二)>,这次我们讲解一下[根据OpenID列表群发] 根据OpenID列表群发[订阅号不可用,服务号认证后可用] 接口调用请求说明 h ...

  7. .net微信公众号开发——消息与事件

    作者:王先荣    本文介绍如何处理微信公众号开发中的消息与事件,包括:(1)消息(事件)概况:(2)验证消息的真实性:(3)解析消息:(4)被动回复消息:(5)发送其他消息.    开源项目地址:h ...

  8. C#微信公众号开发系列教程四(接收普通消息)

    微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C ...

  9. ASP.NET MVC4 微信公众号开发之网页授权(二):通过公众号AppID(应用ID)和AppSecret(应用密钥)取得网页授权openid

    ASP.NET MVC4 微信公众号开发之网页授权(一):搭建基础环境 通过了上一篇文章我们已经搭建好了基础开发大环境,现在打开开发环境这里我用的是 vs2013,通过如下方式: 拼接请求链接重定向到 ...

  10. 微信公众号开发C#系列-7、消息管理-接收事件推送

    1.概述 在微信用户和公众号产生交互的过程中,用户的某些操作会使得微信服务器通过事件推送的形式通知到开发者在开发者中心处设置的服务器地址,从而开发者可以获取到该信息.其中,某些事件推送在发生后,是允许 ...

随机推荐

  1. 洛谷 P3807 【模板】卢卡斯定理

    P3807 [模板]卢卡斯定理 题目背景 这是一道模板题. 题目描述 给定n,m,p(1\le n,m,p\le 10^51≤n,m,p≤105) 求 C_{n+m}^{m}\ mod\ pCn+mm ...

  2. SQL Server Fundamentals

    http://www.cnblogs.com/CreateMyself/category/810461.html

  3. SQL - 创建一个学生表,要求有主键约束和非空约束

    CREATE TABLE [dbo].[Student] ( [ID] [int] NOT NULL, [Name] [nchar](10) NOT NULL, [Age] [int] NOT NUL ...

  4. hdu4737A Bit Fun 线段树

    //给一串序列,问有多少对[i,j]使得 //[i,j]区间的全部数的或的值小于m //能够知道'或'操作的加(a|b)>=max(a,b) //能够枚举区间的右边r,找左边第一个不满足的位置 ...

  5. 1 TypeScript 简介与安装

    简介: TypeScript 是一种由微软开发维护的自由和开源的编程语言,它是JavaScript的一个超集,支持可选的类型检查,扩展了JavaScript的语法,支持JavaScript的所有语法和 ...

  6. 不同节点 IP 时间同步 分布式时间同步系统的参考时间获取技术分析

    linux linux下时间同步的两种方法分享_LINUX_操作系统_脚本之家 http://www.jb51.net/LINUXjishu/73979.html 分布式时间同步系统的参考时间获取技术 ...

  7. 修改系统时间(取得服务器时间,使用SetLocalTime API函数,需要UAC权限)

    我的客户遇到系统时间不对,自己又不会改,于是想到利用服务端时间来修改本地的系统时间. 第一步,把下面xml存成uac.xml文件备用. <?xml version="1.0" ...

  8. apache配置访问限制

    1.禁止访问某些文件/目录 增加Files选项来控制,比如要不允许访问 .txt扩展名的文件,保护php类库: <Files ~ "\.txt$"> Order all ...

  9. 20170111 ABAP技术小结(全半角转换)

    DATA: it_po LIKE it_alv OCCURS 0 WITH HEADER LINE.************************************************** ...

  10. method.invoke()使用

    public Object invoke(Object obj, Object... args) throws IllegalAccessException, IllegalArgumentExcep ...