上一篇给大家介绍了新增和获取永久素材相关的实战,今天给大家介绍文章草稿操作相关的实战。
公众号草稿是指在公众号后台编辑的尚未发布的文章。草稿功能可以让你在编辑文章时暂时保存并预览,以便在最终决定发布之前进行修改和调整。
公众号开发非常重要的环节就是创建草稿文章,今天就来给大家介绍使用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粉丝才可评论 |
接口返回说明
正确返回结果
{
"media_id":"",
"item":[
{
"index":0,
"ad_count":0
},
{
"index":1,
"ad_count":0
}
]
}
实现代码
定义文章实体ArticleVO.java
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
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;
}
}
新增草稿方法
/**
* 新增草稿
*
* @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 | 草稿的临时访问链接 |
代码示例
/**
* 根据草稿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
调用参数
{
"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 | 这篇图文消息素材的最后更新时间 |
代码示例
/**
* 根据草稿列表
* @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);
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。