使用wxjava实现发表内容、预览信息以及推送文章

简介: 使用wxjava实现发表内容、预览信息以及推送文章

前言

今天分享的内容有如下几个:

  1. 保存草稿
  2. 根绝media_id会哦去草稿箱的信息
  3. 发表内容,并不是发发布(已发表的内容不会推送给用户,不占用群发次数)
  4. 给指定用户发送文章预览
  5. 群发文章(按照分组推送给用户文章)

我这边使用的微信开发工具类是:WxJava,非常的牛。

保存草稿的方法

在这里插入图片描述
代码如下:

    @GetMapping("/saveDrafts")
    public String saveDrafts() {
        WxMpAddDraft wxMpAddDraft = new WxMpAddDraft();
        List<WxMpDraftArticles> wxMpDraftArticlesList = new ArrayList<>();
        WxMpDraftArticles articles = new WxMpDraftArticles();
        articles.setTitle("这是标题");
        articles.setAuthor("雄雄");
        articles.setDigest("这里是摘要信息,主要内筒不在这里哈。");
        articles.setContent("【这里是主要内容】图文消息的具体内容,支持HTML标签,必须少于2万字符,小于1M," +
                "<br/>换一行在说。且此处会去除JS,涉及图片url必须来源 <br/><p>这是再开了个段落</p> " +
                "<span><b style='color:red;'>我是红色的加粗的字体</b></span> " +
                "欢迎来到<b>穆雄雄的博客</b>啊。<a href='http://muxiongxiong.cn'>点击这里</a>");
        //这是原文地址
        articles.setContentSourceUrl("http://muxiongxiong.cn");
        //图文消息的封面id
        articles.setThumbMediaId("这里是零时素材或者永久素材的mediaId");
        //是否显示封面,0为false,即不显示,1为true,即显示(默认)
        articles.setShowCoverPic(0);
        //是否打开评论,0不打开(默认),1打开
        articles.setNeedOpenComment(0);
        //是否粉丝才可评论,0所有人可评论(默认),1粉丝才可评论
        articles.setOnlyFansCanComment(0);
        //草稿的临时链接,点击图文消息跳转链接
        articles.setUrl("https://blog.csdn.net/qq_34137397");
        //图文消息的封面url
        articles.setThumbUrl("https://ucc.alicdn.com/images/user-upload-01/6aeb54b426bc492e880aba5564a2a591.png");
        wxMpDraftArticlesList.add(articles);
        //添加图文消息进去
        wxMpAddDraft.setArticles(wxMpDraftArticlesList);
        //调用添加的方法?
        WxMpAddDraft draftFromat = WxMpAddDraft.fromJson(wxMpAddDraft.toJson());
        //调用添加的方法
        String media_id = "";
        try {
            media_id = wxMpDraftService.addDraft(draftFromat);
        } catch (WxErrorException e) {
            e.printStackTrace();
        }

        return media_id;
    }

说明:

  1. 保存草稿之前需要先添加临时或者永久素材,因为后面需要mediaId
  2. setContent中可以写html标签内容
  3. 保存成功后,会给我们返回一个media_id,发表文章的时候需要使用

在这里插入图片描述

获取草稿箱列表

代码如下:

 @GetMapping("/getDraftsList")
    public String getDraftsList(int offset,int count,int no_content){
        JSONObject object = new JSONObject();
        try {
           WxMpDraftList wxMpDraftList =  wxMpDraftService.listDraft(offset,count);
            List<WxMpDraftItem> wxMpDraftItemList =  wxMpDraftList.getItems();
            wxMpDraftItemList.forEach(WxMpDraftItem::getMediaId);
            object.put("item",wxMpDraftList.getItems());
            object.put("total_count",wxMpDraftList.getTotalCount());
            object.put("item_count",wxMpDraftList.getItemCount());
        } catch (WxErrorException e) {
            e.printStackTrace();
        }
        return object.toJSONString();
    }

说明:

  1. offset:从全部素材的该偏移位置开始返回,0表示从第一个素材返回
  2. count:返回素材的数量,取值在1到20之间
  3. no_content:1 表示不返回 content 字段,0 表示正常返回,默认为 0

在这里插入图片描述

根据media_id获取草稿箱信息

代码如下:

  @GetMapping("/getDraftsInfo")
    public String getDraftsInfo(String mediaId){
        JSONObject object = new JSONObject();

        try {
            WxMpDraftInfo draftInfo =  wxMpDraftService.getDraft(mediaId);
            object.put("news_item",draftInfo.getNewsItem());
        } catch (WxErrorException e) {
            e.printStackTrace();
        }
        return object.toJSONString();

    }

接口调用如下:
在这里插入图片描述

给指定人发送预览文章

代码如下

@GetMapping("/massMessagePreview")
    public String massMessagePreview(String openId,String mediaId){
        WxMpMassPreviewMessage mpMassPreviewMessage = new WxMpMassPreviewMessage();
        mpMassPreviewMessage.setToWxUserOpenid(openId);
        mpMassPreviewMessage.setMediaId(mediaId);
        mpMassPreviewMessage.setMsgType(WxConsts.MassMsgType.MPNEWS);
        try {
            WxMpMassSendResult massSendResult =wxMpMassMessageService.massMessagePreview(mpMassPreviewMessage);
            log.info("发送预览成功");
            log.info("dataId====="+massSendResult.getMsgDataId());
            log.info("msgId======"+massSendResult.getMsgId());
        } catch (WxErrorException e) {
            e.printStackTrace();
        }

        return "发送预览成功";
    }

说明

  1. openId:让谁预览的openid
  2. mediaId:文章的media_id

接口调用如下:
在这里插入图片描述

推送文章(按照标签推送)

代码如下:

  @GetMapping("/massGroupMessageSend")
    public String massGroupMessageSend(String mediaId){
        WxMpMassTagMessage wxMpMassTagMessage = new WxMpMassTagMessage();
        //标签id,如果不设置则就意味着发给所有用户.
        //wxMpMassTagMessage.setTagId();
        wxMpMassTagMessage.setMediaId(mediaId);
        wxMpMassTagMessage.setMsgType(WxConsts.MassMsgType.MPNEWS);
        wxMpMassTagMessage.setSendAll(true);
        try {
            WxMpMassSendResult massSendResult =wxMpMassMessageService.massGroupMessageSend(wxMpMassTagMessage);
            log.info("发送推文成功");
            log.info("dataId====="+massSendResult.getMsgDataId());
            log.info("msgId======"+massSendResult.getMsgId());
        } catch (WxErrorException e) {
            e.printStackTrace();
        }

        return "发送推文成功";
    }

说明

  1. mediaId:让谁预览的media_id
  2. 群发完之后,后台就可以看到了

在这里插入图片描述

后台信息如下:

在这里插入图片描述

目录
相关文章
|
前端开发 API PHP
微信分享自定义图片和摘要
参考:  微信分享实现   微信现在是众多公司营销的重点。遍布朋友圈和消息群组里的html5各位可能也是天天见了,不过自从微信更新了官方api后,对整个微信内的页面管控都严格了不少。而官方的分享卡片,是众多在微信生态中传播的html5静态页面的一个重点。
1558 0
|
5月前
|
域名解析 JavaScript 网络协议
技术心得记录:如何使用google地图的api(整理)
技术心得记录:如何使用google地图的api(整理)
450 0
|
6月前
|
JSON 前端开发 Java
基于Java爬取微博数据(五) 补充微博正文列表图片 or 视频 内容
【5月更文挑战第15天】基于Java爬取微博数据(五) 补充微博正文列表图片 or 视频 内容
|
前端开发 JavaScript 数据库
layui框架实战案例(20):常用条件判断和信息展示技巧(图片预览、动态表格、短信已读未读、链接分享、信息脱敏、内置框架页)
layui框架实战案例(20):常用条件判断和信息展示技巧(图片预览、动态表格、短信已读未读、链接分享、信息脱敏、内置框架页)
584 0
|
前端开发 数据库
eggjs 怎么实现更新用户信息接口去更新上传头像信息?
eggjs 怎么实现更新用户信息接口去更新上传头像信息?
160 0
 eggjs 怎么实现更新用户信息接口去更新上传头像信息?
|
监控 JavaScript 前端开发
Axure实战23:创建一个包含富文本编辑的消息推送页面
Axure实战23:创建一个包含富文本编辑的消息推送页面
1151 0
Axure实战23:创建一个包含富文本编辑的消息推送页面
|
SQL JavaScript 前端开发
Kettle发送邮箱并在正文中以表格形式展示内容[升级版]
Kettle发送邮箱并在正文中以表格形式展示内容[升级版]
|
开发工具 开发者 流计算
Chromecast 发布 SDK,在线内容可轻松放上电视屏幕
自从有了 Chromecast,用户把各种自己喜爱的在线内容投放到电视屏幕上变得非常方便,投放过程简单得只需要用户按下手机、平板和笔记本上的投放按钮。
282 0
Chromecast 发布 SDK,在线内容可轻松放上电视屏幕
|
分布式数据库 开发者 Hbase
初始化页面微博内容|学习笔记
快速学习 初始化页面微博内容
129 0