前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java公众号开发系列(四):文章草稿操作笔记

Java公众号开发系列(四):文章草稿操作笔记

原创
作者头像
IT技术分享社区
发布2024-01-30 13:12:39
2750
发布2024-01-30 13:12:39
举报
文章被收录于专栏:公众号开发公众号开发

上一篇给大家介绍了新增和获取永久素材相关的实战,今天给大家介绍文章草稿操作相关的实战。

Java公众号开发系列(三):新增和获取永久素材

公众号草稿是指在公众号后台编辑的尚未发布的文章。草稿功能可以让你在编辑文章时暂时保存并预览,以便在最终决定发布之前进行修改和调整。

公众号开发非常重要的环节就是创建草稿文章,今天就来给大家介绍使用Java来对公众号草稿的新增、查询操作。

一、 新增草稿

请求url:https://api.weixin.qq.com/cgi-bin/draft/add?access_token=ACCESS_TOKEN

请求参数

参数

说明

title

标题

author

文章的作者,非必填

digest

文章的摘要内容,如果为空则默认,则默认抓取正文前54个字。非必填

content

文章内容,支持HTML标签,内容必须少于2万字符,小于1M,如果涉及文章内容的图片,需要调用 "上传图文消息内的图片获取URL"接口获取。外部图片地址无效会被过滤掉。

content_source_url

原文地址支持第三方链接

thumb_media_id

文章的封面图片Id(必须是永久图片素材MediaID)

need_open_c二、omment

是否打开评论,0不打开(默认),1打开

only_fans_can_comment

是否粉丝才可评论,0所有人可评论(默认),1粉丝才可评论

接口返回说明

正确返回结果

代码语言:javascript
复制
{
    "media_id":"",
    "item":[
        {
            "index":0,
            "ad_count":0
        },
        {
            "index":1,
            "ad_count":0
        }
    ]
}

实现代码

定义文章实体ArticleVO.java

代码语言:javascript
复制
package models;

/**
 * 草稿明细
 */
public class ArticleVO {
    private String title;
    private String author;
    private String digest;
    private String content;
    private String content_source_url;
    private String thumb_media_id;
    private int need_open_comment;
    private int only_fans_can_comment;

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public String getDigest() {
        return digest;
    }

    public void setDigest(String digest) {
        this.digest = digest;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public String getContent_source_url() {
        return content_source_url;
    }

    public void setContent_source_url(String content_source_url) {
        this.content_source_url = content_source_url;
    }

    public String getThumb_media_id() {
        return thumb_media_id;
    }

    public void setThumb_media_id(String thumb_media_id) {
        this.thumb_media_id = thumb_media_id;
    }

    public int getNeed_open_comment() {
        return need_open_comment;
    }

    public void setNeed_open_comment(int need_open_comment) {
        this.need_open_comment = need_open_comment;
    }

    public int getOnly_fans_can_comment() {
        return only_fans_can_comment;
    }

    public void setOnly_fans_can_comment(int only_fans_can_comment) {
        this.only_fans_can_comment = only_fans_can_comment;
    }

    @Override
    public String toString() {
        return "ArticleVO{" +
                "title='" + title + '\'' +
                ", author='" + author + '\'' +
                ", digest='" + digest + '\'' +
                ", content='" + content + '\'' +
                ", content_source_url='" + content_source_url + '\'' +
                ", thumb_media_id='" + thumb_media_id + '\'' +
                ", need_open_comment=" + need_open_comment +
                ", only_fans_can_comment=" + only_fans_can_comment +
                '}';
    }
}

草稿实体 DraftVO.java

代码语言:javascript
复制
package models;

import java.util.List;

/**
 * 草稿实体
 */
public class DraftVO {
    private List<ArticleVO> articles;

    public List<ArticleVO> getArticles() {
        return articles;
    }

    public void setArticles(List<ArticleVO> articles) {
        this.articles = articles;
    }
}

新增草稿方法

代码语言:javascript
复制
/**
     * 新增草稿
     *
     * @param token
     */
    private static void AddDraft(String token) {
        String addDraftUrl = "https://api.weixin.qq.com/cgi-bin/draft/add?access_token=" + token;
        DraftVO postVO = new DraftVO();
        List<ArticleVO> list = new ArrayList<>();
        // 第一篇图文内容
        ArticleVO model = new ArticleVO();
        model.setTitle("文章测试1");
        model.setAuthor("小明");
        model.setDigest("我是摘要内容01");
        model.setContent("<section class=\"_135editor\" data-tools=\"\" data-id=\"105278\">\n" +
                "\t<section style=\"margin: 10px auto;text-align: center;\">\n" +
                "\t\t<section style=\"font-size: 36px;letter-spacing: 1.5px;color: #0b79ff;text-align: left;margin: 0 0 -25px 40px;transform:   rotate(0deg);-webkit-transform:   rotate(0deg);-moz-transform:   rotate(0deg);-o-transform:   rotate(0deg);\">\n" +
                "\t\t\t<strong>0</strong><strong class=\"autonum\" data-original-title=\"\" title=\"\">1</strong>\n" +
                "\t\t</section>\n" +
                "\t\t<section style=\"display: flex;justify-content: flex-start;align-items: center;margin: 0 0 -4px 25px;\">\n" +
                "\t\t\t<section style=\"width: 7px;height: 7px;background-color: #0b79ff;border-radius: 50%;box-sizing:border-box;\"></section>\n" +
                "\t\t\t<section style=\"width: 20%;height: 1px;background-color: #fff;box-sizing:border-box;max-width: 20% !important;\" data-width=\"20%\"></section>\n" +
                "\t\t</section>\n" +
                "\t\t<section style=\"border: 1px solid #5ca6ff;padding: 30px 25px;border-radius: 12px;box-sizing:border-box;\">\n" +
                "\t\t\t<section data-autoskip=\"1\" class=\"135brush\" style=\"text-align: justify;line-height:1.75em;letter-spacing: 1.5px;font-size:14px;color:#333333;background: transparent;\">\n" +
                "\t\t\t\t<p style=\"vertical-align:inherit;\">\n" +
                "\t\t\t\t\t我是第一篇图文内容\n" +
                "\t\t\t\t</p>\n" +
                "\t\t\t</section>\n" +
                "\t\t</section>\n" +
                "\t</section>\n" +
                "\t<section class=\"_135editor\" data-role=\"paragraph\">\n" +
                "\t\t<p style=\"vertical-align:inherit;\">\n" +
                "\t\t\t<br/>\n" +
                "\t\t</p>\n" +
                "\t</section>\n" +
                "</section>\n" +
                "<section data-role=\"paragraph\" class=\"_135editor\">\n" +
                "\t<p >\n" +
                "\t\t<br/>\n" +
                "\t</p>\n" +
                "</section>");
        model.setThumb_media_id("");
        model.setNeed_open_comment(1);
        model.setOnly_fans_can_comment(1);
        list.add(model);

        // 第一篇图文内容
        ArticleVO model2 = new ArticleVO();
        model2.setTitle("文章测试1");
        model2.setAuthor("小明");
        model2.setDigest("我是摘要内容01");
        model2.setContent("<section class=\"_135editor\" data-tools=\"\" data-id=\"118498\">\n" +
                "\t<section style=\"margin: 10px auto;\">\n" +
                "\t\t<section>\n" +
                "\t\t\t<section style=\"border: 1px solid #4b73b5;border-right: none;padding: 15px 15px 13px 15px;box-sizing:border-box;\">\n" +
                "\t\t\t\t<section data-autoskip=\"1\" class=\"135brush\" style=\"text-align: justify;line-height:1.75em;letter-spacing: 1.5px;font-size:14px;color:#333333;background: transparent;\">\n" +
                "\t\t\t\t\t<p>\n" +
                "\t\t\t\t\t\t我是第二篇图文内容\n" +
                "\t\t\t\t\t</p>\n" +
                "\t\t\t\t</section>\n" +
                "\t\t\t</section>\n" +
                "\t\t\t<section style=\"display: flex;justify-content: flex-start;margin: -21px 0 0 0;padding: 0  0 0 1px;box-sizing:border-box;\">\n" +
                "\t\t\t\t<section style=\"width: 0;height: 1px;border-bottom: 20px solid #fabb11;border-right: 20px solid transparent;box-sizing:border-box;\"></section>\n" +
                "\t\t\t</section>\n" +
                "\t\t</section>\n" +
                "\t</section>\n" +
                "</section>\n" +
                "<section data-role=\"paragraph\" class=\"_135editor\">\n" +
                "\t<p >\n" +
                "\t\t<br/>\n" +
                "\t</p>\n" +
                "</section>");
        model2.setThumb_media_id("");
        model2.setNeed_open_comment(1);
        model2.setOnly_fans_can_comment(1);
        list.add(model2);
        postVO.setArticles(list);
        String result= HttpUtil.post(addDraftUrl, JSONUtil.toJsonStr(postVO));
        System.out.println("新增草稿返回结果:"+result);

    }

输出结果

二、获取单个草稿实体

请求url:https://api.weixin.qq.com/cgi-bin/draft/get?access_token=ACCESS_TOKEN

请求类型:Post

参数

是否必须

说明

access_token

调用接口凭证 Get参数

media_id

要获取的草稿的media_id Body参数

返回参数说明

参数

描述

title

标题

author

文章作者

digest

图文消息的摘要

content

图文消息的具体内容

content_source_url

图文消息的原文地址,即点击“阅读原文”后的URL

thumb_media_id

图文消息的封面永久素材图片素材id

show_cover_pic

是否在正文显示封面。默认为0,不支持修改

need_open_comment

是否打开评论,0不打开(默认),1打开

only_fans_can_comment

是否粉丝才可评论,0所有人可评论(默认),1粉丝才可评论

url

草稿的临时访问链接

代码示例

代码语言:javascript
复制
 /**
     * 根据草稿id获取单个草稿内容
     * @param token
     * @param mediaId
     */
    private static void GetDraftByMediaId(String token, String mediaId) {
        String url = "https://api.weixin.qq.com/cgi-bin/draft/get?access_token=" + token;
        // 定义body 实体
        HashMap<String,Object> map=new HashMap<>();
        map.put("media_id",mediaId);
        String result = HttpUtil.post(url, JSONUtil.toJsonStr(map));
        System.out.println(result);
    }

输出结果

三、获取草稿列表

请求url:https://api.weixin.qq.com/cgi-bin/draft/batchget?access_token=ACCESS_TOKEN

调用参数

代码语言:javascript
复制
{
    "offset":OFFSET,
    "count":COUNT,
    "no_content":NO_CONTENT
}

请求参数说明

参数

是否必须

说明

access_token

调用接口凭证 url拼接

offset

从全部素材的该偏移位置开始返回,0表示从第一个素材返回

count

获取草稿的数量,取值在1到20之间

no_content

1 表示不返回 content 字段,0 表示正常返回,默认为 0

返回参数说明

参数

描述

total_count

草稿素材的总数

item_count

本次调用获取的素材的数量

media_id

图文消息的id

title

图文消息的标题

author

文章作者

digest

图文消息的摘要

content

图文消息的具体内容,

content_source_url

图文消息的原文地址,即点击“阅读原文”后的URL

thumb_media_id

图文消息的封面永久图片素材id

show_cover_pic

是否在正文显示封面为0,即不展示

need_open_comment

是否打开评论,0不打开(默认),1打开

only_fans_can_comment

是否粉丝才可评论,0所有人可评论(默认),1粉丝才可评论

url

草稿的临时链接

update_time

这篇图文消息素材的最后更新时间

代码示例

代码语言:javascript
复制
   /**
     * 根据草稿列表
     * @param token
     */
    private static void GetDraftList(String token) {
        String url = "https://api.weixin.qq.com/cgi-bin/draft/batchget?access_token=" + token;
        // 定义body 实体
        HashMap<String,Object> map=new HashMap<>();
        map.put("offset",0);
        map.put("count",2);
        map.put("no_content",1);

        String result = HttpUtil.post(url, JSONUtil.toJsonStr(map));
        System.out.println(result);
    }

我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、 新增草稿
  • 二、获取单个草稿实体
  • 三、获取草稿列表
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档