微信公众号实现回复图文消息

目录

参数说明

通过微信官方的消息接口指南,可以看到对图文消息的参数介绍,如下图所示:

从上图可以了解到:

请求消息的基类

图文消息类

图文消息中的Articles类

图文消息中的ArticlesItem类

service层实现方法

封装方法

运行结果


参数说明

通过微信官方的消息接口指南,可以看到对图文消息的参数介绍,如下图所示:

从上图可以了解到:

1、图文消息的个数限制为10,也就是图文中ArticleCount的值(图文消息的个数,限制在10条以内)

2、对于图文消息,第一条图文的图片显示为大图,其他图文的图片显示为小图。

3、第一条图文的图片大小建议为640*320,其他图文的图片建议为80*80

下面开始实现:

请求消息的基类

import com.thoughtworks.xstream.annotations.XStreamAlias;import java.io.Serializable;/*** @author inchlifc*/
public class BaseMessage implements Serializable {@XStreamAlias("ToUserName")@XStreamCDATAprivate String ToUserName;@XStreamAlias("FromUserName")@XStreamCDATAprivate String FromUserName;@XStreamAlias("CreateTime")private Long CreateTime;@XStreamAlias("MsgType")@XStreamCDATAprivate String MsgType;public BaseMessage() {super();}public BaseMessage(String fromUserName, String toUserName) {super();FromUserName = fromUserName;ToUserName = toUserName;CreateTime = System.currentTimeMillis();}public String getToUserName() {return ToUserName;}public void setToUserName(String toUserName) {ToUserName = toUserName;}public String getFromUserName() {return FromUserName;}public void setFromUserName(String fromUserName) {FromUserName = fromUserName;}public Long getCreateTime() {return CreateTime;}public void setCreateTime(Long createTime) {CreateTime = createTime;}public String getMsgType() {return MsgType;}public void setMsgType(String msgType) {MsgType = msgType;}
}

图文消息类

import com.thoughtworks.xstream.annotations.XStreamAlias;import java.util.List;@XStreamAlias("xml")
public class ArticlesMessage extends BaseMessage {@XStreamAlias("ArticleCount")private int ArticleCount;@XStreamAlias("Articles")private List<ArticlesItem> Articles;public int getArticleCount() {return ArticleCount;}public void setArticleCount(int articleCount) {ArticleCount = articleCount;}public List<ArticlesItem> getArticles() {return Articles;}public void setArticles(List<ArticlesItem> articles) {Articles = articles;}
}

图文消息中的Articles类

import com.thoughtworks.xstream.annotations.XStreamAlias;import java.util.List;@XStreamAlias("Articles")
public class Articles {private List<ArticlesItem> Articles;
}

图文消息中的ArticlesItem类

import com.thoughtworks.xstream.annotations.XStreamAlias;import java.io.Serializable;@XStreamAlias("item")
public class ArticlesItem implements Serializable {@XStreamAlias("Title")@XStreamCDATAprivate String Title;@XStreamAlias("Description")@XStreamCDATAprivate String Description;@XStreamAlias("PicUrl")@XStreamCDATAprivate String PicUrl;@XStreamAlias("Url")@XStreamCDATAprivate String Url;public String getTitle() {return Title;}public void setTitle(String title) {Title = title;}public String getDescription() {return Description;}public void setDescription(String description) {Description = description;}public String getPicUrl() {return PicUrl;}public void setPicUrl(String picUrl) {PicUrl = picUrl;}public String getUrl() {return Url;}public void setUrl(String url) {Url = url;}
}

service层实现方法

封装方法

/*** 获取博客图文消息** @param custermName* @param serverName* @param createTime* @return*/private ArticlesMessage getBlogMessage(String custermName, String serverName, Long createTime) {ArticlesMessage outputMsg = new ArticlesMessage();outputMsg.setFromUserName(serverName);outputMsg.setToUserName(custermName);outputMsg.setCreateTime(createTime);outputMsg.setMsgType(MsgType.NEWS.getValue());List<ArticlesItem> articles = new ArrayList<>();ArticlesItem item1 = new ArticlesItem();item1.setTitle("晚天吹凉风");item1.setDescription("点击进入晚天吹凉风博客");item1.setPicUrl(WechatConstant.BASE_SERVER + "resources/images/wechat/a.png");item1.setUrl("https://my.oschina.net/inchlifc/blog");articles.add(item1);outputMsg.setArticles(articles);outputMsg.setArticleCount(articles.size());return outputMsg;}

判断如果输入数字1,返回图文消息推送

// 处理接收消息ServletInputStream in = request.getInputStream();// 将POST流转换为XStream对象XStream xs = new XStream();xs = SerializeXmlUtil.createXstream();XStream.setupDefaultSecurity(xs);xs.allowTypes(new Class[]{TextMessage.class, InputMessage.class, ArticlesMessage.class});xs.processAnnotations(InputMessage.class);xs.processAnnotations(ArticlesMessage.class);xs.processAnnotations(ImageMessage.class);// 将指定节点下的xml节点数据映射为对象xs.alias("xml", InputMessage.class);// 将流转换为字符串StringBuilder xmlMsg = new StringBuilder();byte[] b = new byte[4096];for (int n; (n = in.read(b)) != -1; ) {xmlMsg.append(new String(b, 0, n, "UTF-8"));}logger.info("收到消息====" + xmlMsg.toString());// 将xml内容转换为InputMessage对象InputMessage inputMsg = (InputMessage) xs.fromXML(xmlMsg.toString());// 服务端String servername = inputMsg.getToUserName();// 客户端String custermname = inputMsg.getFromUserName();// 接收时间long createTime = inputMsg.getCreateTime();// 返回时间Long returnTime = Calendar.getInstance().getTimeInMillis() / 1000;//接手文本内容String content = inputMsg.getContent();// 取得消息类型String msgType = inputMsg.getMsgType();if (MsgType.TEXT.getValue().equals(msgType)) {//输入1 推送博客信息if ("1".equals(content)) {logger.info("收到文本1");ArticlesMessage outputMsg = getBlogMessage(custermname, servername, returnTime);logger.info("返回博客图文消息===" + xs.toXML(outputMsg));response.getWriter().write(xs.toXML(outputMsg));}
}

运行结果


不忘初心,如果您认为这篇文章有价值,认同作者的付出,可以微信二维码打赏任意金额给作者(微信号:cx18375319923)哦,Thanks♪(・ω・)ノ

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/58627.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

带大家写一波微信公众号的爬取

开发工具 python版本 &#xff1a; 3.6.4 相关模块&#xff1a; pdfkit模块&#xff1b; requests模块&#xff1b; 以及一些Python自带的模块。 抓包工具&#xff1a; fiddler 环境搭建 python 环境 安装Python并添加到环境变量&#xff0c;pip安装需要的相关模块即可。fiddl…

微信公众号开发之关键词回复

微信公众号开发详细教程 公众号的关键词回复是一个最基本的功能&#xff0c;大部分的关键词回复可以在授权的第三方平台(微微校、腾讯微校等)去进行管理&#xff0c;配置开发服务器之后&#xff0c;微信平台的自动回复和自定义菜单会失效&#xff0c;而在开发服务器里面管理这…

外汇天眼:使用 MT4 进行交易的最佳方式

在外汇交易方面&#xff0c;MT4是最受欢迎的软件之一。它提供了广泛的功能和工具&#xff0c;可用于进行有利可图的交易。 在本文中&#xff0c;我们将熟悉 Metatrader 4&#xff0c;并了解一些使用它进行交易的最佳方式。 让我们从基础开始。 Metatrader 4 基础知识 Metatr…

期货从入门到高深之手动交易---软件的使用2

上期说了新手如何选择期货交易软件&#xff0c;这集来说说软件的使用规则 首先我们找到你所开户的期货公司官网在其下载栏里下载 例如 一般来说&#xff0c;你在哪家开的户&#xff0c;软件下载好了之后直接会显示这家期货公司的坐席号&#xff0c;如下图所示 接着进入界面&a…

期货开户加一分高交返靠谱吗?

接下来讲讲手续费的标准。目前对于新人来说期货公司的选择确实有一些复杂&#xff0c;交易者可以经过对比选择最适合自己的期货公司&#xff0c;对比一下手续费。 一、手续费加一分 期货手续费交易所手续费期货公司佣金 交易所手续费是固定不变的&#xff0c;是交易所直接收…

正大国际期货:如何提升外盘恒指交易技巧?

一、心态的调整 首要最难做到的是心态的调整。人的情绪是多变的&#xff0c;如果你没有一颗平静的心&#xff0c;在这个行业成功的几率很小。赚钱不骄傲&#xff0c;亏钱不沮丧&#xff0c;没有人能完全地做到&#xff0c;但是我们要尽量去做到。赚钱不必欣喜若狂&#xff0c;…

正大国际期货:恒指操作技巧之交易中五种绝佳的开仓思路分析

很多人总是亏损&#xff0c;其实最重要的原因之一是没有一个优势的概率系统&#xff0c;正大IxxxuanI经过了解之后&#xff0c;对目前市面上概率系统进行总结&#xff0c;现将以下几种优势的概率系统归纳罗列如下&#xff0c;有缘者定可举一反三&#xff0c;或可为你细化和改良…

想炒期货是如何开户的?

随着互联网时代的到来&#xff0c;如今95%的期货交易者都采用网上开户&#xff0c;可以在网上找到更优质的期货公司进行开户&#xff0c;一般开户使用手机或者电脑开户都可以&#xff0c;实际开户中用手机的可能要多一些。 那这里可能没有做过的会有疑问&#xff0c;为什么不是…

三种最常用的期货交易系统,99%的人都不知道

作为一个有多年交易经验的期货交易者&#xff0c;我发现大部分的交易者竟然一直在用错误的交易理念去做交易。当然&#xff0c;在做交易初期&#xff0c;我也是一样。只不过我后来找到了对的路。坦白说&#xff0c;我找到正确的交易系统&#xff0c;并不是因为我聪明&#xff0…

chatgpt赋能python:Python怎么做选择题?

Python怎么做选择题&#xff1f; 作为一种最广泛使用的编程语言之一&#xff0c;Python被广泛应用于数据科学、机器学习、人工智能、Web开发等领域&#xff0c;而我们今天要聚焦的是Python如何实现选择题的功能。 选择题是什么&#xff1f; 选择题是一种常见的考试题型&…

保姆级教程:Spring Cloud 集成 Seata 分布式事务

点击关注公众号&#xff0c;Java干货及时送达&#x1f447; 环境搭建 Nacos搭建 最新版本快速搭建 使用Mysql模式 Nacos直接启动即可。控制台默认账号密码是nacos/nacos&#xff0c;Mysql账户密码有两个 root/root 和 nacos/nacos。 Seata搭建 Seata版本1.5.0 快速搭建 Seata1.…

《AI绘画工具保姆级指南手册--以Midjourney为例【含国内中文版】》

大家下午好&#xff0c;近期陆陆续续有很多饱子私信我&#xff0c;表达出非常热切的心情&#xff0c;想要学习关于AIGC领域的AI绘画&#xff0c;毕竟AI绘画工具真的很火&#xff1b;这是前一阵给大家分享了《AIGC之文本生成指南手册 --以ChatGPT为例》&#xff0c;感兴趣饱子可…

Ai口播几天涨粉20w项目拆解(保姆级教程)

这几天看老妈在刷某音&#xff0c;看到她总是刷到一些小朋友的视频。声音很可爱&#xff0c;凑过去一看原来是一个小和尚在说一些祝福话。仔细一看其实是一个Ai人物在口播。然后到某书上一搜索。好家伙&#xff01;整屏幕都是。而且不乏一二十万粉丝账号的。每个账号发布的视频…

史上最详细使用copliot AI保姆级教程来了

目录 概述 第一步:注册 第二步:使用 第三步:copliot基本用法 第四步:copliot成功案列 概述 Copilot 是一款由 OpenAI 推出的人工智能代码自动补全AI工具&#xff0c;它可以帮助程序员更快、更准确地编写代码。Copilot 的核心技术基于 GPT-3 模型&#xff0c;但是在编码方…

公司入职一个阿里大佬,把SpringBoot项目启动从420秒优化到了40秒!

大家好&#xff0c;我是老赵 0.背景 公司 SpringBoot 项目在日常开发过程中发现服务启动过程异常缓慢&#xff0c;常常需要6-7分钟才能暴露端口&#xff0c;严重降低开发效率。通过 SpringBoot 的 SpringApplicationRunListener 、BeanPostProcessor 原理和源码调试等手段排查发…

SpringBoot 统一功能处理

大家好&#xff0c;我是老赵 前言 接下来是 Spring Boot 统⼀功能处理模块了&#xff0c;也是 AOP 的实战环节&#xff0c;要实现的课程⽬标有以下 3 个&#xff1a; 统⼀⽤户登录权限验证统⼀数据格式返回统⼀异常处理 接下我们⼀个⼀个来看。 一、用户登录权限效验 ⽤户登录权…

目标检测算法——YOLOv5/YOLOv7改进结合轻量型Ghost模块

>>>深度学习Tricks&#xff0c;第一时间送达<<< 论文题目&#xff1a;《GhostNet&#xff1a;More Features from Cheap Operations》论文地址&#xff1a; https://arxiv.org/pdf/1911.11907v1.pdf 由于内存和计算资源有限&#xff0c;在嵌入式设备上部署…

苹果最新动态 苹果推送 iOS 14 正式版发布

苹果发布会此次虽然没有公布新手机&#xff0c;预计是在国庆期间吧&#xff0c;不过发布会上还是公布了一些信息&#xff0c;下面给大家整理下苹果的最新动态&#xff0c;一起来看看&#xff01; 苹果推送 iOS 14 正式版 9 月 17 日&#xff0c;苹果正式推送了 iOS 14、iPadOS…

彩票走势图xcode源码

#源码介绍 此份彩票走势图源码是用xcode写的&#xff0c;需要的小伙伴自取哦。 #效果展示 #源码已上传阿里云oss&#xff0c;彩票走势图传送门 来自&#xff1a;https://12580code.com/631.html