国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Maison Applet WeChat Développement WeChat Analyser la deuxième étape de l'API de développement Java WeChat pour obtenir et répondre aux messages

Analyser la deuxième étape de l'API de développement Java WeChat pour obtenir et répondre aux messages

Mar 13, 2017 pm 01:06 PM

Cet article analyse principalement l'API de développement Java WeChatLa deuxième étape consiste à obtenir et à répondre aux messages. Les amis intéressés peuvent se référer à

Comment obtenir et répondre à l'API de développement WeChat. News, je vais vous le présenter ci-dessous

1 Description
* Cet exemple est basé sur la documentation de développement WeChat : http://mp.weixin.qq. .com/wiki /home/index.htmlDernière version (03/04/2016 17:34:36) pour la démonstration du développement.
* Plate-forme d'édition?: myeclipse10.7 win32 jdk1.7 tomcat7.0
* Serveur?: Alibaba Cloud Windows Server 2008 64bits
* Exigences de la plate-forme?: servletUtiliser la méthode d'annotation, exigences de la plate-forme?: j2ee6.0, jdk6.0, tomcat7.0
* La démonstration se concentre davantage sur l'analyse des API.
* Afin de faciliter la description des tests, chaque cas de test est indépendant et ne dépend pas d'autres méthodes. Ne pensez pas beaucoup à l'emballage.
* La démonstration doit être réalisée autant que possible conformément aux exigences de l'API. Le but est de comprendre comment utiliser le document et d'obtenir l'effet de tirer des conclusions à partir d'un exemple.
* Connaissances requises?: base Java solide, compréhension des connaissances en communication réseau http, compréhension suffisante de javaweb, jsonparsing
* à la fin de chaque article, le code source de démonstration de cette partie sera être donné. Après analyse de l'API, tous les codes sources de démonstration seront fournis sous forme de packages de codes sources.
* Heure actuelle?: 03/04/2016 17:32:57, sous réserve de cette heure.

2. Document original - gestion des messages (Résumé)
?Adresse du document : http://mp.weixin.qq .com/wiki/17/f298879f8fb29ab98b2f2971d42552fd.html

?Gestion des messages
?Recevoir des messages - recevoir des messages ordinaires
?Recevoir des messages - recevoir des événements Push
?Envoyer un message de réponse passive
?Envoyer un message de cryptage et de décryptage lors d'une réponse passive
?Envoyer un message de service client
?Envoyer une interface d'envoi de groupe de messages
?Envoyer une interface de message de modèle de message
?Envoyer les spécifications de l'opération de message de modèle de message
?Obtenir la configuration de la réponse automatique du compte public

3. Compréhension du document
?Recevoir un message
?Le document explique ceci?: lorsqu'un utilisateur WeChat ordinaire envoie un message à un compte public, le serveur WeChat POSTera les données XML package du message à l’URL renseignée par le développeur.
?Compréhension?: Le serveur WeChat renvoie le message envoyé par l'utilisateur à la demande sous forme de flux Post. Lorsque nous voulons récupérer le message envoyé par l'utilisateur, nous pouvons l'obtenir via req.getInputStream(). Bien entendu, nous pouvons effectuer l'analyse nécessaire en fonction du format XML du message renvoyé dans le document.
?
Implémentation :

/*
 * 該部分我們獲取用戶發(fā)送的信息,并且解析成<K,V>的形式進(jìn)行顯示
 */
// 解析用戶發(fā)送過來的信息
InputStream is = req.getInputStream();// 拿取請求流
// 將解析結(jié)果存儲在HashMap中
Map<String, String> map = new HashMap<String, String>();
// 解析xml,將獲取到的返回結(jié)果xml進(jìn)行解析成我們習(xí)慣的文字信息
SAXReader reader = new SAXReader();// 第三方j(luò)ar:dom4j【百度:saxreader解析xml】
Document document = null;
try {
 document = reader.read(is);
} catch (DocumentException e1) {
 // TODO Auto-generated catch block
 e1.printStackTrace();
}
// 得到xml根元素
Element root = document.getRootElement();
// 得到根元素的所有子節(jié)點(diǎn)
List<Element> elementList = root.elements();

// 遍歷所有子節(jié)點(diǎn)
for (Element e : elementList)
 map.put(e.getName(), e.getText());

// 測試輸出
Set<String> keySet = map.keySet();
// 測試輸出解析后用戶發(fā)過來的信息
System.out.println(TAG + ":解析用戶發(fā)送過來的信息開始");
for (String key : keySet) {
 System.out.println(key + ":" + map.get(key));
}
System.out.println(TAG + ":解析用戶發(fā)送過來的信息結(jié)束");

? Envoyer un message
?Le document explique ceci : Lorsqu'un utilisateur envoie un message à un compte officiel (ou lors de la transmission d'événements déclenchés par certaines opérations utilisateur spécifiques), une requête POST sera générée. Les développeurs peuvent répondre au message en renvoyant une structure XML spécifique dans le package de réponse (Get) (maintenant. texte de réponse pris en charge, image, image et texte, voix, vidéo, musique). à proprement parler, l’envoi d’un message de réponse passive n’est pas réellement une interface, mais une réponse à un message envoyé par le serveur WeChat.
?Compréhension?: lorsqu'un utilisateur envoie une demande, une demande POST sera générée et nous pourrons répondre au message via Respone. Cependant, le contenu de la réponse a des exigences de format strictes. Ce n'est que si les exigences de format sont remplies que le serveur WeChat le traitera et le renverra à l'utilisateur. En regardant le module ? Gestion des messages ? du document, nous pouvons voir qu'il existe différents messages dans WeChat. Chaque type de message a ses propres exigences de format spécifiques. Nous devons suivre les exigences pour renvoyer normalement des informations spécifiques à l'utilisateur. Nous essayons de répondre aux messages texte et graphiques aux utilisateurs selon le format requis du document. Point clé?: Construire les paramètres requis selon les exigences du document. Remarque spéciale?: les paramètres sont sensibles à la casse.
? Implémentation 1-Réponse aux messages texte ordinaires :

//實(shí)例1:發(fā)送普通文本消息,請查看文檔關(guān)于“回復(fù)文本消息”的xml格式

// 第一步:按照回復(fù)文本信息構(gòu)造需要的參數(shù)
TextMsg textMsg = new TextMsg();
textMsg.setToUserName(map.get("FromUserName"));// 發(fā)送和接收信息“User”剛好相反
textMsg.setFromUserName(map.get("ToUserName"));
textMsg.setCreateTime(new Date().getTime());// 消息創(chuàng)建時(shí)間 (整型)
textMsg.setMsgType("text");// 文本類型消息
textMsg.setContent("我是服務(wù)器回復(fù)給用戶的信息");

// // 第二步,將構(gòu)造的信息轉(zhuǎn)化為微信識別的xml格式【百度:xstream bean轉(zhuǎn)xml】
XStream xStream = new XStream();
xStream.alias("xml", textMsg.getClass());
String textMsg2Xml = xStream.toXML(textMsg);
System.out.println(textMsg2Xml);

// // 第三步,發(fā)送xml的格式信息給微信服務(wù)器,服務(wù)器轉(zhuǎn)發(fā)給用戶
PrintWriter printWriter = resp.getWriter();
printWriter.print(textMsg2Xml);

? Implémentation 2-Réponse aux messages graphiques :

//實(shí)例2,發(fā)送圖文消息。請查看文檔關(guān)于“回復(fù)圖文消息”的xml格式

// 第一步:按照回復(fù)圖文信息構(gòu)造需要的參數(shù)
List<Article> articles = new ArrayList<Article>();
Article a = new Article();
a.setTitle("我是圖片標(biāo)題");
a.setUrl("www.baidu.com");// 該地址是點(diǎn)擊圖片跳轉(zhuǎn)后
a.setPicUrl("http://b.hiphotos.baidu.com/image/pic/item/08f790529822720ea5d058ba7ccb0a46f21fab50.jpg");// 該地址是一個(gè)有效的圖片地址
a.setDescription("我是圖片的描述");
articles.add(a);
PicAndTextMsg picAndTextMsg = new PicAndTextMsg();
picAndTextMsg.setToUserName(map.get("FromUserName"));// 發(fā)送和接收信息“User”剛好相反
picAndTextMsg.setFromUserName(map.get("ToUserName"));
picAndTextMsg.setCreateTime(new Date().getTime());// 消息創(chuàng)建時(shí)間 (整型)
picAndTextMsg.setMsgType("news");// 圖文類型消息
picAndTextMsg.setArticleCount(1);
picAndTextMsg.setArticles(articles);
// 第二步,將構(gòu)造的信息轉(zhuǎn)化為微信識別的xml格式【百度:xstream bean轉(zhuǎn)xml】
XStream xStream = new XStream();
xStream.alias("xml", picAndTextMsg.getClass());
xStream.alias("item", a.getClass());
String picAndTextMsg2Xml = xStream.toXML(picAndTextMsg);
System.out.println(picAndTextMsg2Xml);
// 第三步,發(fā)送xml的格式信息給微信服務(wù)器,服務(wù)器轉(zhuǎn)發(fā)給用戶
PrintWriter printWriter = resp.getWriter();
printWriter.print(picAndTextMsg2Xml);

Tous les codes sources d'opération dans cette partie peut être utilisé directement
? CoreServlet.java (y compris l'accès au serveur, la réception des messages envoyés par les utilisateurs, la réponse aux messages texte ordinaires et la réponse aux messages graphiques. Nécessite des jars tiers?: dom4j, xstream)

package com.gist.servlet;

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import com.gist.bean.Article;
import com.gist.bean.PicAndTextMsg;
import com.thoughtworks.xstream.XStream;

/**
 * @author 高遠(yuǎn)</n> 郵箱:wgyscsf@163.com</n> 博客 http://m.miracleart.cn/;/n>
 *  編寫時(shí)期 2016-4-3 下午4:34:05
 */
@WebServlet("/CoreServlet")
public class CoreServlet extends HttpServlet {
 private static final long serialVersionUID = 1L;
 String TAG = "CoreServlet";

 /*
 * 第二步:驗(yàn)證服務(wù)器地址的有效性 開發(fā)者提交信息后,微信服務(wù)器將發(fā)送GET請求到填寫的服務(wù)器地址URL上,
 * GET請求攜帶四個(gè)參數(shù):signature、timestamp、nonce、echostr
 * 開發(fā)者通過檢驗(yàn)signature對請求進(jìn)行校驗(yàn)(下面有校驗(yàn)方式)。 若確認(rèn)此次GET請求來自微信服務(wù)器,請?jiān)瓨臃祷豦chostr參數(shù)內(nèi)容,
 * 則接入生效, 成為開發(fā)者成功,否則接入失敗。
 * 
 * 加密/校驗(yàn)流程如下: 1. 將token、timestamp、nonce三個(gè)參數(shù)進(jìn)行字典序排序 2.
 * 將三個(gè)參數(shù)字符串拼接成一個(gè)字符串進(jìn)行sha1加密 3. 開發(fā)者獲得加密后的字符串可與signature對比,標(biāo)識該請求來源于微信
 */
 /*
 * 字典排序(lexicographical
 * order)是一種對于隨機(jī)變量形成序列的排序方法。其方法是,按照字母順序,或者數(shù)字小大順序,由小到大的形成序列。
 */
 @Override
 protected void doGet(HttpServletRequest req, HttpServletResponse resp)
  throws ServletException, IOException {

 // 設(shè)置編碼
 req.setCharacterEncoding("utf-8");
 resp.setContentType("html/text;charset=utf-8");
 resp.setCharacterEncoding("utf-8");
 // 獲取輸出流
 PrintWriter printWriter = resp.getWriter();

 // 設(shè)置一個(gè)全局的token,開發(fā)者自己設(shè)置。api這樣解釋:Token可由開發(fā)者可以任意填寫,
 // 用作生成簽名(該Token會和接口URL中包含的Token進(jìn)行比對,從而驗(yàn)證安全性)
 String token = "wgyscsf";
 // 根據(jù)api說明,獲取上述四個(gè)參數(shù)
 String signature = req.getParameter("signature");
 String timestamp = req.getParameter("timestamp");
 String nonce = req.getParameter("nonce");
 String echostr = req.getParameter("echostr");
 // // temp:臨時(shí)打印,觀看返回參數(shù)情況
 // System.out.println(TAG + ":signature:" + signature + ",timestamp:"
 // + timestamp + ",nonce:" + nonce + ",echostr:" + echostr);
 // 根據(jù)api所說的“加密/校驗(yàn)流程”進(jìn)行接入。共計(jì)三步

 // 第一步:將token、timestamp、nonce三個(gè)參數(shù)進(jìn)行字典序排序
 String[] parms = new String[] { token, timestamp, nonce };// 將需要字典序排列的字符串放到數(shù)組中
 Arrays.sort(parms);// 按照api要求進(jìn)行字典序排序
 // 第二步:將三個(gè)參數(shù)字符串拼接成一個(gè)字符串進(jìn)行sha1加密
 // 拼接字符串
 String parmsString = "";// 注意,此處不能=null。
 for (int i = 0; i < parms.length; i++) {
  parmsString += parms[i];
 }
 // sha1加密
 String mParms = null;// 加密后的結(jié)果
 MessageDigest digest = null;
 try {
  digest = java.security.MessageDigest.getInstance("SHA");
 } catch (NoSuchAlgorithmException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 digest.update(parmsString.getBytes());
 byte messageDigest[] = digest.digest();
 // Create Hex String
 StringBuffer hexString = new StringBuffer();
 // 字節(jié)數(shù)組轉(zhuǎn)換為 十六進(jìn)制 數(shù)
 for (int i = 0; i < messageDigest.length; i++) {
  String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
  if (shaHex.length() < 2) {
  hexString.append(0);
  }
  hexString.append(shaHex);
 }
 mParms = hexString.toString();// 加密結(jié)果

 /*
  * api要求: 若確認(rèn)此次GET請求來自微信服務(wù)器,請?jiān)瓨臃祷豦chostr參數(shù)內(nèi)容, 則接入生效, 成為開發(fā)者成功,否則接入失敗。
  */
 // 第三步: 開發(fā)者獲得加密后的字符串可與signature對比,標(biāo)識該請求來源于微信接入成功。
 // System.out.println(TAG + ":" + mParms + "---->" + signature);
 if (mParms.equals(signature)) {
  // System.out.println(TAG + ":" + mParms + "---->" + signature);
  printWriter.write(echostr);
 } else {
  // 接入失敗,不用回寫
  // System.out.println(TAG + "接入失敗");
 }
 }

 /*
 * 查看api文檔關(guān)于收發(fā)消息推送的消息格式基本一致。 如以下格式: <xml>
 * <ToUserName><![CDATA[toUser]]></ToUserName>
 * <FromUserName><![CDATA[fromUser]]></FromUserName>
 * <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType>
 * <Content><![CDATA[this is a test]]></Content>
 * <MsgId>1234567890123456</MsgId> </xml> 那么,我們就可以進(jìn)行統(tǒng)一處理。
 */
 /*
 * 我們先獲取輸入流,看輸入流里面的信息。通過測試打印輸出流,我們可以看到每次用戶請求,都會收到req請求,請求格式是xml格式,該信息在文檔中有說明。
 */
 /*
 * 特別注意,req.getInputStream()只能獲取一次,并且只能讀取一次。如果想要多次讀取,需要另外想辦法。為了簡單起見,
 * 我們只獲取一次req.getInputStream(),不再打印輸出流信息。直接打印解析后的信息。
 */
 @Override
 protected void doPost(HttpServletRequest req, HttpServletResponse resp)
  throws ServletException, IOException {
 // 設(shè)置編碼
 req.setCharacterEncoding("utf-8");
 resp.setContentType("html/text;charset=utf-8");
 resp.setCharacterEncoding("utf-8");

 /*
  * 該部分我們獲取用戶發(fā)送的信息,并且解析成<K,V>的形式進(jìn)行顯示
  */
 // 解析用戶發(fā)送過來的信息
 InputStream is = req.getInputStream();// 拿取請求流
 // 將解析結(jié)果存儲在HashMap中
 Map<String, String> map = new HashMap<String, String>();
 // 解析xml,將獲取到的返回結(jié)果xml進(jìn)行解析成我們習(xí)慣的文字信息
 SAXReader reader = new SAXReader();// 第三方j(luò)ar:dom4j【百度:saxreader解析xml】
 Document document = null;
 try {
  document = reader.read(is);
 } catch (DocumentException e1) {
  // TODO Auto-generated catch block
  e1.printStackTrace();
 }
 // 得到xml根元素
 Element root = document.getRootElement();
 // 得到根元素的所有子節(jié)點(diǎn)
 List<Element> elementList = root.elements();

 // 遍歷所有子節(jié)點(diǎn)
 for (Element e : elementList)
  map.put(e.getName(), e.getText());

 // 測試輸出
 Set<String> keySet = map.keySet();
 // 測試輸出解析后用戶發(fā)過來的信息
 System.out.println(TAG + ":解析用戶發(fā)送過來的信息開始");
 for (String key : keySet) {
  System.out.println(key + ":" + map.get(key));
 }
 System.out.println(TAG + ":解析用戶發(fā)送過來的信息結(jié)束");

 /*
  * 該部分我們嘗試按照文檔的要求格式給用戶回復(fù)文本信息、圖文消息。重點(diǎn):按照文檔要求構(gòu)造需要的參數(shù)。特別注意:參數(shù)區(qū)分大小寫。
  */

 // //實(shí)例1:發(fā)送普通文本消息,請查看文檔關(guān)于“回復(fù)文本消息”的xml格式
 //
 // // 第一步:按照回復(fù)文本信息構(gòu)造需要的參數(shù)
 // TextMsg textMsg = new TextMsg();
 // textMsg.setToUserName(map.get("FromUserName"));// 發(fā)送和接收信息“User”剛好相反
 // textMsg.setFromUserName(map.get("ToUserName"));
 // textMsg.setCreateTime(new Date().getTime());// 消息創(chuàng)建時(shí)間 (整型)
 // textMsg.setMsgType("text");// 文本類型消息
 // textMsg.setContent("我是服務(wù)器回復(fù)給用戶的信息");
 //
 // // // 第二步,將構(gòu)造的信息轉(zhuǎn)化為微信識別的xml格式【百度:xstream bean轉(zhuǎn)xml】
 // XStream xStream = new XStream();
 // xStream.alias("xml", textMsg.getClass());
 // String textMsg2Xml = xStream.toXML(textMsg);
 // System.out.println(textMsg2Xml);
 //
 // // // 第三步,發(fā)送xml的格式信息給微信服務(wù)器,服務(wù)器轉(zhuǎn)發(fā)給用戶
 // PrintWriter printWriter = resp.getWriter();
 // printWriter.print(textMsg2Xml);

 // //實(shí)例2,發(fā)送圖文消息。請查看文檔關(guān)于“回復(fù)圖文消息”的xml格式

 // 第一步:按照回復(fù)圖文信息構(gòu)造需要的參數(shù)
 List<Article> articles = new ArrayList<Article>();
 Article a = new Article();
 a.setTitle("我是圖片標(biāo)題");
 a.setUrl("www.baidu.com");// 該地址是點(diǎn)擊圖片跳轉(zhuǎn)后
 a.setPicUrl("http://b.hiphotos.baidu.com/image/pic/item/08f790529822720ea5d058ba7ccb0a46f21fab50.jpg");// 該地址是一個(gè)有效的圖片地址
 a.setDescription("我是圖片的描述");
 articles.add(a);
 PicAndTextMsg picAndTextMsg = new PicAndTextMsg();
 picAndTextMsg.setToUserName(map.get("FromUserName"));// 發(fā)送和接收信息“User”剛好相反
 picAndTextMsg.setFromUserName(map.get("ToUserName"));
 picAndTextMsg.setCreateTime(new Date().getTime());// 消息創(chuàng)建時(shí)間 (整型)
 picAndTextMsg.setMsgType("news");// 圖文類型消息
 picAndTextMsg.setArticleCount(1);
 picAndTextMsg.setArticles(articles);
 // 第二步,將構(gòu)造的信息轉(zhuǎn)化為微信識別的xml格式【百度:xstream bean轉(zhuǎn)xml】
 XStream xStream = new XStream();
 xStream.alias("xml", picAndTextMsg.getClass());
 xStream.alias("item", a.getClass());
 String picAndTextMsg2Xml = xStream.toXML(picAndTextMsg);
 System.out.println(picAndTextMsg2Xml);
 // 第三步,發(fā)送xml的格式信息給微信服務(wù)器,服務(wù)器轉(zhuǎn)發(fā)給用戶
 PrintWriter printWriter = resp.getWriter();
 printWriter.print(picAndTextMsg2Xml);
 }
}

?TestMsg.java (haricot de message texte ordinaire)

package com.gist.bean;

/**
 * @author 高遠(yuǎn)</n> 郵箱:wgyscsf@163.com</n> 博客 http://m.miracleart.cn/;/n>
 *  編寫時(shí)期 2016-4-4 下午2:09:27
 */
public class TextMsg {
 private String ToUserName;
 private String FromUserName;
 private long CreateTime;
 private String MsgType;

 @Override
 public String toString() {
 return "TextMsg [ToUserName=" + ToUserName + ", FromUserName="
  + FromUserName + ", CreateTime=" + CreateTime + ", MsgType="
  + MsgType + ", Content=" + Content + "]";
 }

 private String Content;

 public TextMsg(String toUserName, String fromUserName, long createTime,
  String msgType, String content) {
 super();
 ToUserName = toUserName;
 FromUserName = fromUserName;
 CreateTime = createTime;
 MsgType = msgType;
 Content = content;
 }

 public TextMsg() {
 super();
 }

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

 public String getContent() {
 return Content;
 }

 public void setContent(String content) {
 Content = content;
 }
}

?Article.java (haricot article interne d'image et de message texte)


package com.gist.bean;

/**
 * @author 高遠(yuǎn)</n> 郵箱:wgyscsf@163.com</n> 博客 http://m.miracleart.cn/;/n>
 *  編寫時(shí)期 2016-4-4 下午2:47:08
 */
public class Article {
 private String Title;

 @Override
 public String toString() {
 return "item [Title=" + Title + ", Description=" + Description
  + ", PicUrl=" + PicUrl + ", Url=" + 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;
 }

 private String Description;
 private String PicUrl;
 private String Url;

}

?PicAndTextMsg.java (haricot image et message texte)


package com.gist.bean;

import java.util.List;

/**
 * @author 高遠(yuǎn)</n> 郵箱:wgyscsf@163.com</n> 博客 http://m.miracleart.cn/;/n>
 *  編寫時(shí)期 2016-4-4 下午2:47:08
 */
public class PicAndTextMsg {
 private String ToUserName;
 private String FromUserName;
 private long CreateTime;
 private String MsgType;
 private int ArticleCount;
 private List<Article> Articles;

 @Override
 public String toString() {
 return "PicAndTextMsg [ToUserName=" + ToUserName + ", FromUserName="
  + FromUserName + ", CreateTime=" + CreateTime + ", MsgType="
  + MsgType + ", ArticleCount=" + ArticleCount + ", Articles="
  + Articles + "]";
 }

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

 public int getArticleCount() {
 return ArticleCount;
 }

 public void setArticleCount(int articleCount) {
 ArticleCount = articleCount;
 }

 public List<Article> getArticles() {
 return Articles;
 }

 public void setArticles(List<Article> articles) {
 Articles = articles;
 }

}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1502
276