As respostas ao desenvolvimento da conta pública do WeChat são para sua referência. O conteúdo específico é o seguinte
Descrição dos principais parâmetros de mensagens gráficas e de texto
Através do guia oficial da interface do WeChat, você pode ver os parâmetros das mensagens gráficas e de texto, como mostrado na figura abaixo:
Na foto acima, podemos aprender:
1. O número de mensagens gráficas é limitado a 10, ou seja, o valor do articleCount nas mensagens gráficas (o número de mensagens gráficas é limitado a 10)
2. Para mensagens gráficas e de texto, a imagem do primeiro gráfico e texto é exibida como uma imagem grande, enquanto as imagens de outros gráficos e texto são exibidos como uma imagem pequena.
3. O tamanho recomendado da primeira foto é 640*320, e a imagem recomendada é 80*80 para outras fotos
O seguinte começa com a implementação:
Classe base para a mensagem de solicitação:
importar com.thoughtworks.xstream.annotações.xstreamalias; importar java.io.Serializable;/** * @author Inchlifc */classe pública Basemessage implementa serializável {@xstreamalias ("tousername") @xstreamcdata private string tousername; @Xstreamalias ("FromUserName") @xstreamcdata string privada desename; @Xstreamalias ("createTime") private Long CreateTime; @Xstreamalias ("msgtype") @xstreamcdata private string msgtype; public Basemessage () {super (); } public basEMessage (string fromUsename, string touserName) {super (); FromUserName = FromUrName; Toumerername = tousername; CreateTime = System.currenttimemillis (); } public string gettouserName () {return touserName; } public void SettouserName (string touserName) {tousername = touserrne; } 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; }}Categoria de mensagem gráfica e de texto:
importar com.thoughtworks.xstream.annotações.xstreamalias; importar java.util.list; @xstreamalias ("xml") public class ArticlesSessage estende basessessage {@xstreamalias ("articleCount") private int articleCount; @Xstreamalias ("artigos") Lista privada <Ticlesitem> Artigos; public int getArticleCount () {return articleCount; } public void setArticleCount (int articleCount) {articleCount = articleCount; } Lista pública <Ticlesitem> getArticles () {return Artigos; } public void setTicles (List <Ticlesitem> Artigos) {Artigos = Artigos; }}Classe de artigos nas mensagens de texto e texto:
importar com.thoughtworks.xstream.annotações.xstreamalias; importar java.util.list; @xstreamalias ("artigos") Artigos de classe pública {Lista privada <Ticlesitem> Artigos;}Classe Articlesitem nas mensagens de texto e texto:
importar com.thoughtworks.xstream.annotações.xstreamalias; importar java.io.serializable; @xstreamalias ("item") classe pública Articlesitem implementa seriizable {@xstreamalias ("title") @xstreamcdata private string title; @Xstreamalias ("descrição") @xstreamcdata string privada descrição; @Xstreamalias ("picurl") @xstreamcdata private string picurl; @Xstreamalias ("url") @xstreamcdata private string url; public string gettitle () {return title; } public void Settitle (título da string) {title = title; } public string getDescription () {return description; } public void SetDescription (String description) {Descrição = Descrição; } public string getPicurl () {return picurl; } public void Setpicurl (string picurl) {picurl = picurl; } public string geturl () {return url; } public void Seturl (String url) {url = url; }}Método de implementação da camada de serviço:
Método de embalagem
/ ** * Obtenha mensagens de texto do blog * * @param CustomName * @Param ServerName * @param createTime * @return */ private ArtlesMessage getBlogMessage (String CustomName, String ServerName, Longo CreateTime) {ArtlesMessage Outputmsg = new ArticlesMessage (); outputMSG.SetFromUserName (serverName); outputmsg.setTouserName (CusterMName); outputMSG.SetCreateTime (CreateTime); outputmsg.setmsgtype (msgtype.news.getValue ()); List <TiclesItItem> artigos = new ArrayList <> (); ArticleSitem Item1 = new ArticlesItem (); Item1.setTitle ("Verifique o blog Evening Cool Breeze"); Item1.Setpicurl (WeChatConstant.Base_Server + "Recursos/Images/WeChat/A.Png"); item1.seturl ("https://my.oschina.net/inchlifc/blog"); artigos.Add (Item1); outputmsg.setarticles (artigos); outputmsg.setArticleCount (Articles.size ()); retornar outputmsg; }Se você inserir o número 1, retorne à mensagem de texto empurrar
// Processar a mensagem recebida servletInputStream em = request.getInputStream (); // Converta o fluxo de postagem para o objeto XStream xstream xs = new xStream (); xs = serializexmlutil.createxStream (); XStream.setUpDefaultSecurity (XS); xs.allowTypes (nova classe [] {textMessage.class, inputMessage.class, ArticlesMessage.class}); xs.processannotações (inputMessage.class); xs.processannotações (ArticlesMessage.class); xs.processannotações (imagemessage.class); // mapear os dados do nó XML no nó especificado nos objetos xs.alias ("xml", inputMessage.class); // converte fluxos em string stringbuilder xmlmsg = new stringbuilder (); byte [] b = novo byte [4096]; for (int n; (n = in.read (b))! = -1;) {xmlmsg.append (new String (b, 0, n, "utf -8")); } logger.info ("mensagem recebida ====" + xmlmsg.toString ()); // Converta o conteúdo XML em InputMessage InputMessage inputMsg = (inputMessage) xs.fromxml (xmlmsg.toString ()); // server string servername = inputMSG.getTouserName (); // client string customName = inputmsg.getFromUserName (); // Receba tempo longo CreateTime = inputmsg.getCreateTime (); // tempo de retorno longo tempo de retorno = calendar.getInstance (). GetTimeInmillis () / 1000; // Pegue o conteúdo do conteúdo de texto conteúdo = inputMSG.getContent (); // obtenha o tipo de mensagem string msgtype = inputmsg.getmsgtype (); if (msgtype.text.getValue (). Equals (msgtype)) {// Entrada 1 Push informações do blog se ("1" .equals (content)) {logger.info ("Texto 1 recebido"); ArticlesMessage outputmsg = getBlogMessage (CusterMName, ServerName, ReturnTime); logger.info ("retornar à mensagem de texto do blog ===" + xs.toxml (outputMSG)); Response.getWriter (). Write (xs.toxml (outputMSG)); }}Resultados em execução:
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.