一、微信消息分组群发接口简介

1、请求:该请求是使用post提交地址为:

https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=ACCESS_TOKEN

其中ACCESS_TOKEN是我们动态获取的 。

发送的数据:(这里使用图文消息示例)

{

"filter":{

"group_id":"2" },

"mpnews":{

"media_id":"123dsdajkasd231jhksad" },

"msgtype":"mpnews"

}

filter,用于设定图文消息的接收者; group_id,群发到的分组的group_id(可在java微信接口之二—获取用户组);

mpnews,用于设定即将发送的图文消息;

media_id, 用于群发的消息的media_id(可在java微信接口之四—上传素材中获取); msgtype,群发的消息类型,图文消息为mpnews,文本消息为text,语音为voice,音乐为music,图片为image,视频为video.

2、响应:该响应也是以json方式返回的

正确的时候返回的数据:

{

"errcode":0,

"errmsg":"send job submission success",

"msg_id":34182

}

errcode 错误码

errmsg 错误信息

msg_id 消息ID

错误的时候返回的数据:{"errcode":40004,"errmsg":"invalid media type"}

errcode,为错误代码,errmsg为错误信息

二、关于java代码的调用

该接口的调用与java微信接口四—上传素材一样,需要使用到commons-httpclient。其中数据是构造成json数据后,放在post方法请求体里面发送给服务器端。

三、代码实现

1 packagecom.demo.test;2

3 importjava.io.File;4 importjava.util.ArrayList;5 importjava.util.HashMap;6 importjava.util.List;7 importjava.util.Map;8

9 importorg.apache.commons.httpclient.methods.PostMethod;10 importorg.apache.commons.httpclient.methods.multipart.FilePart;11 importorg.apache.commons.httpclient.methods.multipart.MultipartRequestEntity;12 importorg.apache.commons.httpclient.methods.multipart.Part;13 importorg.apache.http.HttpEntity;14 importorg.apache.http.HttpResponse;15 importorg.apache.http.HttpStatus;16 importorg.apache.http.client.HttpClient;17 importorg.apache.http.client.methods.HttpGet;18 importorg.apache.http.impl.client.DefaultHttpClient;19 importorg.apache.http.util.EntityUtils;20

21 importcom.google.gson.Gson;22 importcom.google.gson.JsonArray;23 importcom.google.gson.JsonObject;24 importcom.google.gson.JsonParser;25

26 public classTest27 {28 public static final String GET_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token";//获取access

29 public static final String UPLOAD_IMAGE_URL = "http://file.api.weixin.qq.com/cgi-bin/media/upload";//上传多媒体文件

30 public static final String UPLOAD_FODDER_URL = "https://api.weixin.qq.com/cgi-bin/media/uploadnews";31 public static final String GET_USER_GROUP = "https://api.weixin.qq.com/cgi-bin/groups/get"; //url

32 public static final String SEND_MESSAGE_URL = "https://api.weixin.qq.com/cgi-bin/message/mass/sendall";33 public static final String APP_ID = "wxa549b28c24cf341e";34 public static final String SECRET = "78d8a8cd7a4fa700142d06b96bf44a37";35

36

37 /**38 * 发送消息39 *40 *@paramuploadurl41 * apiurl42 *@paramaccess_token43 *@paramdata44 * 发送数据45 *@return

46 */

47 public staticString sendMsg(String url, String token, String data)48 {49 org.apache.commons.httpclient.HttpClient client = neworg.apache.commons.httpclient.HttpClient();50 String sendurl = String.format("%s?access_token=%s", url, token);51 PostMethod post = newPostMethod(sendurl);52 post53 .setRequestHeader(54 "User-Agent",55 "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:30.0) Gecko/20100101 Firefox/30.0");56

57 post.setRequestHeader("Host", "file.api.weixin.qq.com");58 post.setRequestHeader("Connection", "Keep-Alive");59 post.setRequestHeader("Cache-Control", "no-cache");60 String result = null;61 try

62 {63 post.setRequestBody(data);64 int status =client.executeMethod(post);65 if (status ==HttpStatus.SC_OK)66 {67 String responseContent =post.getResponseBodyAsString();68 System.out.println(responseContent);69 JsonParser jsonparer = new JsonParser();//初始化解析json格式的对象

70 JsonObject json =jsonparer.parse(responseContent)71 .getAsJsonObject();72 if (json.get("errcode") != null

73 && json.get("errcode").getAsString().equals("0"))74 {75 result = json.get("errmsg").getAsString();76 }77 }78 }79 catch(Exception e)80 {81 e.printStackTrace();82 }83 finally

84 {85 returnresult;86 }87 }88

89 public static void main(String[] args) throwsException90 {91 String accessToken = getToken(GET_TOKEN_URL, APP_ID, SECRET);//获取token在微信接口之一中获取

92 if (accessToken != null)//token成功获取

93 {94 System.out.println(accessToken);95 File file = new File("f:" + File.separator + "2000.JPG"); //获取本地文件

96 String id = uploadImage(UPLOAD_IMAGE_URL, accessToken, "image",97 file);//java微信接口之三—上传多媒体文件 可获取

98 if (id != null)99 {100 //构造数据

101 Map map = newHashMap();102 map.put("thumb_media_id", id);103 map.put("author", "wxx");104 map.put("title", "标题");105 map.put("content", "测试fdsfdsfsdfssfdsfsdfsdfs");106 map.put("digest", "digest");107 map.put("show_cover_pic", "0");108

109 Map map2 = newHashMap();110 map2.put("thumb_media_id", id);111 map2.put("author", "wxx");112 map2.put("content_source_url", "www.google.com");113 map2.put("title", "标题");114 map2.put("content", "测试fdsfdsfsdfssfdsfsdfsdfs");115 map2.put("digest", "digest");116

117 Map map3 = newHashMap();118 List list = new ArrayList();119 list.add(map);120 list.add(map2);121 map3.put("articles", list);122

123 Gson gson = newGson();124 String result = gson.toJson(map3);//转换成json数据格式

125 String mediaId =uploadFodder(UPLOAD_FODDER_URL, accessToken,126 result);127 if (mediaId != null)128 {129 String ids = getGroups(GET_USER_GROUP, accessToken);//在java微信接口之二—获取用户组

130 if (ids != null)131 {132 String[] idarray = ids.split(",");//用户组id数组

133 for(String gid : idarray)134 {135

136 JsonObject jObj = newJsonObject();137 JsonObject filter = newJsonObject();138 filter.addProperty("group_id", gid);139 jObj.add("filter", filter);140

141

142 JsonObject mpnews = newJsonObject();143 mpnews.addProperty("media_id", mediaId);144 jObj.add("mpnews", mpnews);145

146 jObj.addProperty("msgtype", "mpnews");147 System.out.println(jObj.toString());148

149 String result2 =sendMsg(SEND_MESSAGE_URL,150 accessToken, jObj.toString());151 System.out.println(result2);152 }153 }154 }155

156 }157 }158 }159 }

发成功后会打印消息,但由于微信服务器的原因,消息不会立即发送,会过一段时间发送。

java 微信高级群发_java微信平台,高级群发接口开发相关推荐

  1. java毕业设计的创意项目众筹平台的设计与开发mybatis+源码+调试部署+系统+数据库+lw

    java毕业设计的创意项目众筹平台的设计与开发mybatis+源码+调试部署+系统+数据库+lw java毕业设计的创意项目众筹平台的设计与开发mybatis+源码+调试部署+系统+数据库+lw 本源 ...

  2. 【Lilishop商城】No4-2.业务逻辑的代码开发,涉及到:会员B端第三方登录的开发-平台注册会员接口开发

    仅涉及后端,全部目录看顶部专栏,代码.文档.接口路径在: [Lilishop商城]记录一下B2B2C商城系统学习笔记~_清晨敲代码的博客-CSDN博客 全篇会结合业务介绍重点设计逻辑,其中重点包括接口 ...

  3. 微信公众平台卡券API接口开发指南

    文章目录 说明 卡券术语介绍 卡券生命周期流程图 准备 申请开发账号 公众平台开发配置 公众号开发信息配置 填写服务器配置并验证有效性 申请微信认证及开通微信卡券功能 卡券分类 普通卡券 会员卡券 朋 ...

  4. java 微信高级群发_Java微信高级群发接口demo--Java学习网

    微信群发接口的基本思路:1.  获取关注者列表2.  创建群发的XML3.  发送群发的XML.作者编写了一个文本群发的demo 供读者分享.public class TestWeixinGroupS ...

  5. java发送微信模板消息_java微信公众平台之发送模板消息

    准备条件: 1.一个测试号,有必要说下的是订阅号没有发送模板消息这一功能,那么开发的小伙伴们就可以直接先注册一个测试号 2.目前我并没有就是做的很完善,网页授权获取openId这个我没做,那么我是直接 ...

  6. java微信支付代码_Java微信支付之服务号支付代码示例

    Java微信支付之服务号支付实现,网上的java微信支付sdk和Demo基本上是水的,看着头疼所以我决心自己开始写Java微信支付之公众号支付,多的不说见下面源码,为了方便使用我分别用了两个Servl ...

  7. java微信支付超时_Java微信支付之关闭订单

    本文实例为大家分享了java微信支付之关闭订单的具体代码,供大家参考,具体内容如下 一.应用场景 商户订单支付失败需要生成新单号重新发起支付,要对原订单号调用关单,避免重复支付 系统下单后,用户支付超 ...

  8. java下载微信支付账单_java微信支付,对账单下载

    2020年1月9日17:22:41 官方文档和sdk https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1 官方也是也有一个0.0 ...

  9. java微信企业付款_Java微信支付-微信企业付款到个人

    [实例简介] 微信支付企业付款到个人,包括付款 以及 查询 参考文章http://blog.csdn.net/fengshizty/article/details/53204566 [实例截图] [核 ...

  10. java 微信 推送_JAVA 微信消息模板推送

    公众号配置模板示例 推送接口 /** * * @title: sendTemplate * @author: daixiaowei * @date: 2019年11月09日 下午 12:59:27 * ...

最新文章

  1. 正则表达式测试工具 Regex Tester 的使用方法
  2. 列表解析和生成器表达式
  3. asp.net学习资源列表
  4. 企业实战_20_MyCat使用HAPpoxy对Mycat负载均衡
  5. 你见过最奇葩的人和事是什么?
  6. java awt android_Android开发基础之Java 日期时间
  7. 点分十进制转32位二进制数组
  8. linux 安装 navicat
  9. 台式电脑主板插线步骤图_台式机电源线接法图解(电脑主板接线图解高清图)...
  10. 离散数学 --- 特殊关系 --- 偏序关系,哈斯图和特殊元素以及其它次序关系
  11. 实话谈扶贫第一篇——教育扶贫
  12. Spring中的Interceptor拦截器中使用@Autowired注解,在运行时会出现空指针
  13. Postman~做接口测试
  14. Dota全图那些事儿
  15. 2月书讯(下)| 新年到,新书到!
  16. 【微信小程序】初识微信小程序组件
  17. 基于计算机控制的花样流水灯,花样流水灯文献综述
  18. app被Rejected 的各种原因翻译。这个绝对有用
  19. 情感驿站 | 如果这个世界真有奇迹,那一定是努力的另一个名字
  20. 编译 android monkey,Android monkey使用详解

热门文章

  1. HCIP/HCIE RoutingSwitching / Datacom备考宝典系列(八)VLAN知识点全面总结
  2. jQuery Ajax async=false异步改为同步时,导致浏览器假死的处理方法
  3. 计量单位报错:消息号BM305 “未使用语言 ZH 创建单位 XXX”
  4. 什么是漏极开路【转】
  5. 产业科技创新杂志产业科技创新杂志社产业科技创新编辑部2022年第3期目录
  6. easysat源码解读(一)
  7. 积木报表-报表常用操作
  8. java 多媒体处理_Java 多媒体处理包 JAVE
  9. keil编译后MCU需要的flash和RAM容量
  10. c语言课英语单词,课程英语单词大全:英语单词32个课程加翻译