Las respuestas al desarrollo de la cuenta pública de WeChat son para su referencia. El contenido específico es el siguiente
Descripción de los parámetros principales de los mensajes gráficos y de texto
A través de la Guía oficial de interfaz de mensajes WeChat, puede ver los parámetros de los mensajes gráficos y de texto, como se muestra en la figura a continuación:
De la imagen de arriba, podemos aprender:
1. El número de mensajes gráficos se limita a 10, es decir, el valor de la base de article en los mensajes gráficos (el número de mensajes gráficos se limita a 10)
2. Para los mensajes gráficos y de texto, la imagen del primer gráfico y texto se muestra como una imagen grande, mientras que las imágenes de otro gráfico y texto se muestran como una imagen pequeña.
3. El tamaño recomendado de la primera imagen es 640*320, y la imagen recomendada es 80*80 para otras imágenes
Lo siguiente comienza con la implementación:
Clase base para el mensaje de solicitud:
import com.thoughtworks.xstream.annotations.xstreamalias; import java.io.serializable;/** * @author Inchlifc */public class BaseMessage implementa serializable {@xStreamalias ("tousername") @xstreamcData string string tousername; @XStreamalias ("fromUsername") @xstreamcdata string private fromUsername; @XStreamalias ("CreateTeTime") Private Long CreateTimeMe; @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 setTousEname (string tousername) {tousername = tousername; } public String getFromUsername () {return fromUsername; } public void setFromUsername (string fromUsername) {fromUsername = fromUsername; } public Long Long GetCreateTime () {return CreateTime; } public void setCreateTime (Long CreateTime) {CreateTime = CreateTime; } public String getMsgType () {return msgType; } public void setMsgType (string msgtype) {msgtype = msgtype; }}Categoría de mensajes gráficos y de texto:
import com.thoughtworks.xstream.annotations.xstreamalias; import java.util.list; @xstreamalias ("xml") Artículos de clase públicaMessMessage extiende BaseMessage {@XStreamalias ("ArticleCount") int ArticleCount; @XStreamalias ("Artículos") Lista privada <AtectriceSitem> Artículos; public int getArticLecount () {return articLecount; } public void setTarticlecount (int } Lista pública <AtectriceSitem> getArticles () {return artículos; } Public void setARTicles (List <ArticeSItem> Artículos) {Artículos = Artículos; }}Clase de artículos en el texto y los mensajes de texto:
import com.thoughtworks.xstream.annotations.xstreamalias; import java.util.list; @xstreamalias ("artículos") Artículos de clase pública {Lista privada <ArtlesItem> Artículos;}Clase de artículos de artículos en el texto y los mensajes de texto:
import com.thoughtworks.xstream.annotations.xstreamalias; import java.io.serializable; @xstreamalias ("item") Los artículos de clase pública implementa serializable {@xStreamalias ("title") @xstreamcdata Título de cadena privada; @XStreamalias ("Descripción") @xStreamCData Private String Descripción; @XStreamalias ("Picurl") @XStreamCData Private String Picurl; @XStreamalias ("URL") @xStreamCData Private String URL; public String gettitle () {Título de retorno; } public void settitle (título de cadena) {title = title; } public String getDescription () {return Descripción; } public void setDescription (String Descripción) {Descripción = Descripción; } public String getPiCurl () {return picurl; } public void setPiCURL (String picurl) {picurl = picurl; } public String getUrl () {return url; } public void seturl (url de cadena) {url = url; }}Método de implementación de la capa de servicio:
Método de embalaje
/ ** * Obtener mensajes de texto de blog * * @param customName * @param servername * @param createtime * @return */ private artículosMessMesge getBlogMessage (String CustomName, String ServerName, Long CreateTime) {ArtlesMessage outputMsg = new Artlessage (); outputMsg.setFromUsername (ServerName); outputMsg.setTouserName (custerMname); outputMsg.SetCreateTime (CreateTimeMe); outputMsg.SetMsgType (msgtype.news.getValue ()); List <AtICtleSItem> Artículos = new ArrayList <> (); ArtículoItem item1 = nuevo ArticleSitem (); Elemento1.settitle ("Compruebe para ingresar el blog de la Breeze Cool Evening"); item1.setPicurl (wechatconstant.base_server + "recursos/imágenes/wechat/a.png"); item1.seturl ("https://my.oschina.net/inchlifc/blog"); Artículo.Add (item1); outputMsg.SetArticles (artículos); outputMSG.SetArticleCount (Articles.Size ()); return outputMsg; }Si ingresa el número 1, vuelva al mensaje de texto.
// procesa el mensaje recibido ServletInputStream in = request.getInputStream (); // Convertir la transmisión post en el objeto xStream xStream xs = new xStream (); xs = SerializexmlUtil.CreatexStream (); Xstream.setupDefaultSecurity (xs); Xs.L.AnlowTypes (nueva clase [] {textMessage.class, inputMessage.class, ArtlesMessage.Class}); xs.processannotations (inputMessage.Class); Xs.Processannotations (ArtlesMessage.Class); xs.processannotations (imageMessage.class); // asigna los datos del nodo XML en el nodo especificado en objetos xs.alias ("xml", inputMessage.class); // Convertir las transmisiones en string StringBuilder xmlmsg = new StringBuilder (); byte [] b = nuevo byte [4096]; for (int n; (n = in.read (b))! = -1;) {xmlmsg.append (nueva cadena (b, 0, n, "utf -8")); } logger.info ("mensaje recibido ====" + xmlmsg.toString ()); // Convierta el contenido XML a InputMessage Object inputMessage inputMsg = (inputMessage) xs.FromXML (xmlmsg.ToString ()); // Server String ServerName = inputMsg.getTousername (); // String Client String CustomName = inputMsg.getFromUsername (); // Recibir tiempo Long CreateTime = inputMsg.getCreateTime (); // Tiempo de retorno Long ReturnTime = calendar.getInstance (). GetTimeInmillis () / 1000; // Tome el contenido de texto String Content = inputMsg.getContent (); // Obtener el tipo de mensaje String MSGType = inputMsg.getMsgtype (); if (msgtype.text.getValue (). Equals (msgtype)) {// Introd 1 Ingrese la información del blog if ("1" .Equals (content)) {logger.info ("texto 1 recibido"); ArticlesMessage outputMsg = getBlogMessage (custermname, servername, returntime); logger.info ("Regreso al mensaje de texto de blog ===" + xs.Toxml (outputMsg)); Response.getWriter (). Write (xs.toxml (outputMsg)); }}Resultados de ejecución:
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.