java认证含金量_计算机二级java证书有用吗?有含金量吗?

微信公众号开发之回复图文消息,供大家参考,具体内容如下

图文消息的主要参数说明

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

776c1205b7c9e84e0e41b6123e5c09a0.png

从上图可以了解到:

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")

@XStreamCDATA

private String ToUserName;

@XStreamAlias("FromUserName")

@XStreamCDATA

private String FromUserName;

@XStreamAlias("CreateTime")

private Long CreateTime;

@XStreamAlias("MsgType")

@XStreamCDATA

private 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 Articles;

public int getArticleCount() {

return ArticleCount;

}

public void setArticleCount(int articleCount) {

ArticleCount = articleCount;

}

public List getArticles() {

return Articles;

}

public void setArticles(List articles) {

Articles = articles;

}

}

图文消息中的Articles类:

import com.thoughtworks.xstream.annotations.XStreamAlias;

import java.util.List;

@XStreamAlias("Articles")

public class Articles {

private List Articles;

}

图文消息中的ArticlesItem类:

import com.thoughtworks.xstream.annotations.XStreamAlias;

import java.io.Serializable;

@XStreamAlias("item")

public class ArticlesItem implements Serializable {

@XStreamAlias("Title")

@XStreamCDATA

private String Title;

@XStreamAlias("Description")

@XStreamCDATA

private String Description;

@XStreamAlias("PicUrl")

@XStreamCDATA

private String PicUrl;

@XStreamAlias("Url")

@XStreamCDATA

private 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 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));

}

}

运行结果:

1f0c05ead66bcf403c6aea7f3e50e7f5.png

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

已被800人点赞

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值