欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

微信公眾號(hào)開(kāi)發(fā)之回復(fù)圖文消息java代碼

 更新時(shí)間:2018年03月28日 09:44:35   作者:小小漁夫  
這篇文章主要為大家詳細(xì)介紹了微信公眾號(hào)開(kāi)發(fā)之回復(fù)圖文消息java代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

微信公眾號(hào)開(kāi)發(fā)之回復(fù)圖文消息,供大家參考,具體內(nèi)容如下

圖文消息的主要參數(shù)說(shuō)明

通過(guò)微信官方的消息接口指南,可以看到對(duì)圖文消息的參數(shù)介紹,如下圖所示:

從上圖可以了解到:

1、圖文消息的個(gè)數(shù)限制為10,也就是圖文中ArticleCount的值(圖文消息的個(gè)數(shù),限制在10條以?xún)?nèi))

2、對(duì)于圖文消息,第一條圖文的圖片顯示為大圖,其他圖文的圖片顯示為小圖。

3、第一條圖文的圖片大小建議為640*320,其他圖文的圖片建議為80*80

下面開(kāi)始實(shí)現(xiàn):

請(qǐng)求消息的基類(lèi):

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;
  }
}

圖文消息類(lèi):

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類(lèi):

import com.thoughtworks.xstream.annotations.XStreamAlias;

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

圖文消息中的ArticlesItem類(lèi):

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層實(shí)現(xiàn)方法:

封裝方法

/**
   * 獲取博客圖文消息
   *
   * @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("晚天吹涼風(fēng)");
    item1.setDescription("點(diǎn)擊進(jìn)入晚天吹涼風(fēng)博客");
    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;
  }

判斷如果輸入數(shù)字1,返回圖文消息推送

// 處理接收消息
    ServletInputStream in = request.getInputStream();
    // 將POST流轉(zhuǎn)換為XStream對(duì)象
    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);
    // 將指定節(jié)點(diǎn)下的xml節(jié)點(diǎn)數(shù)據(jù)映射為對(duì)象
    xs.alias("xml", InputMessage.class);
    // 將流轉(zhuǎn)換為字符串
    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內(nèi)容轉(zhuǎn)換為InputMessage對(duì)象
    InputMessage inputMsg = (InputMessage) xs.fromXML(xmlMsg.toString());

    // 服務(wù)端
    String servername = inputMsg.getToUserName();
    // 客戶(hù)端
    String custermname = inputMsg.getFromUserName();
    // 接收時(shí)間
    long createTime = inputMsg.getCreateTime();
    // 返回時(shí)間
    Long returnTime = Calendar.getInstance().getTimeInMillis() / 1000;
    //接手文本內(nèi)容
    String content = inputMsg.getContent();
    // 取得消息類(lèi)型
    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));
        }
} 

運(yùn)行結(jié)果:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java?NIO?Buffer實(shí)現(xiàn)原理詳解

    Java?NIO?Buffer實(shí)現(xiàn)原理詳解

    本篇文章主要對(duì)NIO核心三件套:緩沖區(qū)(Buffer)、選擇器?(Selector)和通道(Channel),其中之一的緩沖區(qū)Buffer實(shí)現(xiàn)原理的學(xué)習(xí)總結(jié)。感興趣的小伙伴可以了解一下
    2021-11-11
  • Java正則表達(dá)式判斷字符串中是否包含中文示例

    Java正則表達(dá)式判斷字符串中是否包含中文示例

    之前一個(gè)朋友問(wèn)我,如何判斷字符串中是否包含中文,其實(shí)解決的方法很簡(jiǎn)單,但覺(jué)著有必要寫(xiě)出給不知道的朋友們以參考,所以下面這篇文章主要介紹了利用Java正則表達(dá)式判斷字符串中是否包含中文的方法,需要的朋友可以參考。
    2017-03-03
  • 淺談Java 并發(fā)的底層實(shí)現(xiàn)

    淺談Java 并發(fā)的底層實(shí)現(xiàn)

    這篇文章主要介紹了淺談Java 并發(fā)的底層實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • Java中堆和棧的區(qū)別詳解

    Java中堆和棧的區(qū)別詳解

    這篇文章主要介紹了Java中堆和棧的區(qū)別詳解,所有的Java程序都運(yùn)行在JVM虛擬機(jī)內(nèi)部,我們這里介紹的自然是JVM(虛擬)內(nèi)存中的堆和棧,需要的朋友可以參考下
    2015-01-01
  • 解決feign微服務(wù)間的文件上傳報(bào)錯(cuò)問(wèn)題

    解決feign微服務(wù)間的文件上傳報(bào)錯(cuò)問(wèn)題

    這篇文章主要介紹了解決feign微服務(wù)間的文件上傳報(bào)錯(cuò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Eclipse轉(zhuǎn)Itellij IDEA導(dǎo)入Git/svn本地項(xiàng)目的詳細(xì)步驟

    Eclipse轉(zhuǎn)Itellij IDEA導(dǎo)入Git/svn本地項(xiàng)目的詳細(xì)步驟

    這篇文章主要介紹了Eclipse轉(zhuǎn)Itellij IDEA導(dǎo)入Git/svn本地項(xiàng)目,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Java中Map集合的常用方法詳解

    Java中Map集合的常用方法詳解

    本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于Java中Map集合的常用方法詳解,有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。下面我們就來(lái)學(xué)習(xí)一下吧
    2021-11-11
  • 關(guān)于MVC與SpringMVC的介紹、區(qū)別、執(zhí)行流程

    關(guān)于MVC與SpringMVC的介紹、區(qū)別、執(zhí)行流程

    這篇文章主要介紹了關(guān)于MVC與SpringMVC的介紹、區(qū)別、執(zhí)行流程,MVC框架的主要目標(biāo)是將應(yīng)用程序的業(yè)務(wù)邏輯(Model)與用戶(hù)界面(View)分離開(kāi)來(lái),從而提高應(yīng)用程序的可維護(hù)性和可擴(kuò)展性,需要的朋友可以參考下
    2023-05-05
  • Java 正則表達(dá)式入門(mén)詳解(基礎(chǔ)進(jìn)階)

    Java 正則表達(dá)式入門(mén)詳解(基礎(chǔ)進(jìn)階)

    最近看到很多同學(xué)想要學(xué)習(xí)java正則表達(dá)式的一些知識(shí),那么腳本之家小編就為大家介紹一下,其實(shí)正則表達(dá)式實(shí)用性很強(qiáng),處理大幅文字的時(shí)候都需要用得到,語(yǔ)法也大同小異
    2017-10-10
  • IDEA實(shí)現(xiàn)序列化時(shí)如何自動(dòng)生成serialVersionUID的步驟

    IDEA實(shí)現(xiàn)序列化時(shí)如何自動(dòng)生成serialVersionUID的步驟

    這篇文章主要介紹了IDEA實(shí)現(xiàn)序列化時(shí)如何自動(dòng)生成serialVersionUID的步驟,首先安裝GenerateSerialVersionUID插件,當(dāng)出現(xiàn)添加serialVersionUID選項(xiàng),選中則會(huì)自動(dòng)生成serialVersionUID,感興趣的朋友一起學(xué)習(xí)下吧
    2024-02-02

最新評(píng)論