一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - java微信開發API第二步 獲取和回復消息

java微信開發API第二步 獲取和回復消息

2020-05-22 10:30wgyscsf JAVA教程

這篇文章主要為大家詳細介紹了java微信開發API第二步,獲取消息和回復消息,感興趣的小伙伴們可以參考一下

微信開發API如何獲取和回復消息,下面就為大家進行介紹

一、說明
* 本示例根據微信開發文檔:http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/2016 5:34:36 PM )進行開發演示。
* 編輯平臺:myeclipse10.7+win32+jdk1.7+tomcat7.0 
* 服務器:阿里云 windows server 2008 64bits
* 平臺要求:servlet使用注解方式,平臺要求:j2ee6.0+、jdk6.0+、tomcat7.0+
* 演示更加注重于api解析。
* 為了便于測試說明,每個測試用例為獨立,不依賴于其它方法。對于封裝,不多加考慮。
* 演示盡可能按照API要求進行,目的:了解文檔使用方式,達到舉一反三的效果。
* 知識要求:牢固的java基礎、了解http網絡通信知識、對于javaweb有足夠了解、json解析
* 在每篇文章結束會給出該部分演示源碼。在分析完API之后,會以源碼包的形式給出所有演示源碼。
* 當前時間:4/3/2016 5:32:57 PM ,以該時間為準。

二、文檔原文-消息管理(摘要)
 •文檔地址:http://mp.weixin.qq.com/wiki/17/f298879f8fb29ab98b2f2971d42552fd.html
 •消息管理
 ?接收消息-接收普通消息
 ?接收消息-接收事件推送
 ?發送消息-被動回復消息
 ?發送消息-被動回復時的加解密
 ?發送消息-客服消息
 ?發送消息-群發接口
 ?發送消息-模板消息接口
 ?發送消息-模板消息運營規范
 ?獲取公眾號自動回復配置

 三、文檔理解
•接收消息
?文檔這樣解釋:?當普通微信用戶向公眾賬號發消息時,微信服務器將POST消息的XML數據包到開發者填寫的URL上。
 ?理解:微信服務器將用戶發送的消息通過Post流的形式返回給req。當我們想要獲取用戶發送的消息時,可以通過req.getInputStream()獲取。當然,我們可以根據文檔上關于消息的返回的xml格式,進行必要的解析。
 ?
實現:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/*
 * 該部分我們獲取用戶發送的信息,并且解析成<K,V>的形式進行顯示
 */
// 解析用戶發送過來的信息
InputStream is = req.getInputStream();// 拿取請求流
// 將解析結果存儲在HashMap中
Map<String, String> map = new HashMap<String, String>();
// 解析xml,將獲取到的返回結果xml進行解析成我們習慣的文字信息
SAXReader reader = new SAXReader();// 第三方jar: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();
// 得到根元素的所有子節點
List<Element> elementList = root.elements();
 
// 遍歷所有子節點
for (Element e : elementList)
 map.put(e.getName(), e.getText());
 
// 測試輸出
Set<String> keySet = map.keySet();
// 測試輸出解析后用戶發過來的信息
System.out.println(TAG + ":解析用戶發送過來的信息開始");
for (String key : keySet) {
 System.out.println(key + ":" + map.get(key));
}
System.out.println(TAG + ":解析用戶發送過來的信息結束");

•發送消息
?文檔這樣解釋:?當用戶發送消息給公眾號時(或某些特定的用戶操作引發的事件推送時),會產生一個POST請求,開發者可以在響應包(Get)中返回特定XML結構,來對該消息進行響應(現支持回復文本、圖片、圖文、語音、視頻、音樂)。嚴格來說,發送被動響應消息其實并不是一種接口,而是對微信服務器發過來消息的一次回復。
 ?理解:用戶發送請求,會產生一個POST請求,我們可以通過Respone進行回復消息。但是,回復的內容有嚴格的格式要求,只有滿足格式要求,微信服務器才會進行處理返回給用戶。通過查看文檔“消息管理”模塊,我們可以看到微信中有各種各樣的消息,每類消息都有自己特定的格式要求,我們必須按照要求才可以正常的給用戶返回特定的信息。我們嘗試按照文檔的要求格式給用戶回復文本信息、圖文消息。重點:按照文檔要求構造需要的參數。特別注意:參數區分大小寫。
 ?實現1-回復普通文本消息:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//實例1:發送普通文本消息,請查看文檔關于“回復文本消息”的xml格式
 
// 第一步:按照回復文本信息構造需要的參數
TextMsg textMsg = new TextMsg();
textMsg.setToUserName(map.get("FromUserName"));// 發送和接收信息“User”剛好相反
textMsg.setFromUserName(map.get("ToUserName"));
textMsg.setCreateTime(new Date().getTime());// 消息創建時間 (整型)
textMsg.setMsgType("text");// 文本類型消息
textMsg.setContent("我是服務器回復給用戶的信息");
 
// // 第二步,將構造的信息轉化為微信識別的xml格式【百度:xstream bean轉xml】
XStream xStream = new XStream();
xStream.alias("xml", textMsg.getClass());
String textMsg2Xml = xStream.toXML(textMsg);
System.out.println(textMsg2Xml);
 
// // 第三步,發送xml的格式信息給微信服務器,服務器轉發給用戶
PrintWriter printWriter = resp.getWriter();
printWriter.print(textMsg2Xml);

 ?實現2-回復圖文消息:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//實例2,發送圖文消息。請查看文檔關于“回復圖文消息”的xml格式
 
// 第一步:按照回復圖文信息構造需要的參數
List<Article> articles = new ArrayList<Article>();
Article a = new Article();
a.setTitle("我是圖片標題");
a.setUrl("www.baidu.com");// 該地址是點擊圖片跳轉后
a.setPicUrl("http://b.hiphotos.baidu.com/image/pic/item/08f790529822720ea5d058ba7ccb0a46f21fab50.jpg");// 該地址是一個有效的圖片地址
a.setDescription("我是圖片的描述");
articles.add(a);
PicAndTextMsg picAndTextMsg = new PicAndTextMsg();
picAndTextMsg.setToUserName(map.get("FromUserName"));// 發送和接收信息“User”剛好相反
picAndTextMsg.setFromUserName(map.get("ToUserName"));
picAndTextMsg.setCreateTime(new Date().getTime());// 消息創建時間 (整型)
picAndTextMsg.setMsgType("news");// 圖文類型消息
picAndTextMsg.setArticleCount(1);
picAndTextMsg.setArticles(articles);
// 第二步,將構造的信息轉化為微信識別的xml格式【百度:xstream bean轉xml】
XStream xStream = new XStream();
xStream.alias("xml", picAndTextMsg.getClass());
xStream.alias("item", a.getClass());
String picAndTextMsg2Xml = xStream.toXML(picAndTextMsg);
System.out.println(picAndTextMsg2Xml);
// 第三步,發送xml的格式信息給微信服務器,服務器轉發給用戶
PrintWriter printWriter = resp.getWriter();
printWriter.print(picAndTextMsg2Xml);

該部分所有操作源碼,可以直接使用
 •CoreServlet.java(包括服務器接入、接收用戶發送消息、回復普通文字消息、回復圖文消息。需要第三方jar:dom4j、xstream)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
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 高遠</n> 郵箱:[email protected]</n> 博客 http://blog.csdn.net/wgyscsf</n>
 *  編寫時期 2016-4-3 下午4:34:05
 */
@WebServlet("/CoreServlet")
public class CoreServlet extends HttpServlet {
 private static final long serialVersionUID = 1L;
 String TAG = "CoreServlet";
 
 /*
 * 第二步:驗證服務器地址的有效性 開發者提交信息后,微信服務器將發送GET請求到填寫的服務器地址URL上,
 * GET請求攜帶四個參數:signature、timestamp、nonce、echostr
 * 開發者通過檢驗signature對請求進行校驗(下面有校驗方式)。 若確認此次GET請求來自微信服務器,請原樣返回echostr參數內容,
 * 則接入生效, 成為開發者成功,否則接入失敗。
 *
 * 加密/校驗流程如下: 1. 將token、timestamp、nonce三個參數進行字典序排序 2.
 * 將三個參數字符串拼接成一個字符串進行sha1加密 3. 開發者獲得加密后的字符串可與signature對比,標識該請求來源于微信
 */
 /*
 * 字典排序(lexicographical
 * order)是一種對于隨機變量形成序列的排序方法。其方法是,按照字母順序,或者數字小大順序,由小到大的形成序列。
 */
 @Override
 protected void doGet(HttpServletRequest req, HttpServletResponse resp)
  throws ServletException, IOException {
 
 // 設置編碼
 req.setCharacterEncoding("utf-8");
 resp.setContentType("html/text;charset=utf-8");
 resp.setCharacterEncoding("utf-8");
 // 獲取輸出流
 PrintWriter printWriter = resp.getWriter();
 
 // 設置一個全局的token,開發者自己設置。api這樣解釋:Token可由開發者可以任意填寫,
 // 用作生成簽名(該Token會和接口URL中包含的Token進行比對,從而驗證安全性)
 String token = "wgyscsf";
 // 根據api說明,獲取上述四個參數
 String signature = req.getParameter("signature");
 String timestamp = req.getParameter("timestamp");
 String nonce = req.getParameter("nonce");
 String echostr = req.getParameter("echostr");
 // // temp:臨時打印,觀看返回參數情況
 // System.out.println(TAG + ":signature:" + signature + ",timestamp:"
 // + timestamp + ",nonce:" + nonce + ",echostr:" + echostr);
 // 根據api所說的“加密/校驗流程”進行接入。共計三步
 
 // 第一步:將token、timestamp、nonce三個參數進行字典序排序
 String[] parms = new String[] { token, timestamp, nonce };// 將需要字典序排列的字符串放到數組中
 Arrays.sort(parms);// 按照api要求進行字典序排序
 // 第二步:將三個參數字符串拼接成一個字符串進行sha1加密
 // 拼接字符串
 String parmsString = "";// 注意,此處不能=null。
 for (int i = 0; i < parms.length; i++) {
  parmsString += parms[i];
 }
 // sha1加密
 String mParms = null;// 加密后的結果
 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();
 // 字節數組轉換為 十六進制 數
 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();// 加密結果
 
 /*
  * api要求: 若確認此次GET請求來自微信服務器,請原樣返回echostr參數內容, 則接入生效, 成為開發者成功,否則接入失敗。
  */
 // 第三步: 開發者獲得加密后的字符串可與signature對比,標識該請求來源于微信接入成功。
 // 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文檔關于收發消息推送的消息格式基本一致。 如以下格式: <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> 那么,我們就可以進行統一處理。
 */
 /*
 * 我們先獲取輸入流,看輸入流里面的信息。通過測試打印輸出流,我們可以看到每次用戶請求,都會收到req請求,請求格式是xml格式,該信息在文檔中有說明。
 */
 /*
 * 特別注意,req.getInputStream()只能獲取一次,并且只能讀取一次。如果想要多次讀取,需要另外想辦法。為了簡單起見,
 * 我們只獲取一次req.getInputStream(),不再打印輸出流信息。直接打印解析后的信息。
 */
 @Override
 protected void doPost(HttpServletRequest req, HttpServletResponse resp)
  throws ServletException, IOException {
 // 設置編碼
 req.setCharacterEncoding("utf-8");
 resp.setContentType("html/text;charset=utf-8");
 resp.setCharacterEncoding("utf-8");
 
 /*
  * 該部分我們獲取用戶發送的信息,并且解析成<K,V>的形式進行顯示
  */
 // 解析用戶發送過來的信息
 InputStream is = req.getInputStream();// 拿取請求流
 // 將解析結果存儲在HashMap中
 Map<String, String> map = new HashMap<String, String>();
 // 解析xml,將獲取到的返回結果xml進行解析成我們習慣的文字信息
 SAXReader reader = new SAXReader();// 第三方jar: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();
 // 得到根元素的所有子節點
 List<Element> elementList = root.elements();
 
 // 遍歷所有子節點
 for (Element e : elementList)
  map.put(e.getName(), e.getText());
 
 // 測試輸出
 Set<String> keySet = map.keySet();
 // 測試輸出解析后用戶發過來的信息
 System.out.println(TAG + ":解析用戶發送過來的信息開始");
 for (String key : keySet) {
  System.out.println(key + ":" + map.get(key));
 }
 System.out.println(TAG + ":解析用戶發送過來的信息結束");
 
 /*
  * 該部分我們嘗試按照文檔的要求格式給用戶回復文本信息、圖文消息。重點:按照文檔要求構造需要的參數。特別注意:參數區分大小寫。
  */
 
 // //實例1:發送普通文本消息,請查看文檔關于“回復文本消息”的xml格式
 //
 // // 第一步:按照回復文本信息構造需要的參數
 // TextMsg textMsg = new TextMsg();
 // textMsg.setToUserName(map.get("FromUserName"));// 發送和接收信息“User”剛好相反
 // textMsg.setFromUserName(map.get("ToUserName"));
 // textMsg.setCreateTime(new Date().getTime());// 消息創建時間 (整型)
 // textMsg.setMsgType("text");// 文本類型消息
 // textMsg.setContent("我是服務器回復給用戶的信息");
 //
 // // // 第二步,將構造的信息轉化為微信識別的xml格式【百度:xstream bean轉xml】
 // XStream xStream = new XStream();
 // xStream.alias("xml", textMsg.getClass());
 // String textMsg2Xml = xStream.toXML(textMsg);
 // System.out.println(textMsg2Xml);
 //
 // // // 第三步,發送xml的格式信息給微信服務器,服務器轉發給用戶
 // PrintWriter printWriter = resp.getWriter();
 // printWriter.print(textMsg2Xml);
 
 // //實例2,發送圖文消息。請查看文檔關于“回復圖文消息”的xml格式
 
 // 第一步:按照回復圖文信息構造需要的參數
 List<Article> articles = new ArrayList<Article>();
 Article a = new Article();
 a.setTitle("我是圖片標題");
 a.setUrl("www.baidu.com");// 該地址是點擊圖片跳轉后
 a.setPicUrl("http://b.hiphotos.baidu.com/image/pic/item/08f790529822720ea5d058ba7ccb0a46f21fab50.jpg");// 該地址是一個有效的圖片地址
 a.setDescription("我是圖片的描述");
 articles.add(a);
 PicAndTextMsg picAndTextMsg = new PicAndTextMsg();
 picAndTextMsg.setToUserName(map.get("FromUserName"));// 發送和接收信息“User”剛好相反
 picAndTextMsg.setFromUserName(map.get("ToUserName"));
 picAndTextMsg.setCreateTime(new Date().getTime());// 消息創建時間 (整型)
 picAndTextMsg.setMsgType("news");// 圖文類型消息
 picAndTextMsg.setArticleCount(1);
 picAndTextMsg.setArticles(articles);
 // 第二步,將構造的信息轉化為微信識別的xml格式【百度:xstream bean轉xml】
 XStream xStream = new XStream();
 xStream.alias("xml", picAndTextMsg.getClass());
 xStream.alias("item", a.getClass());
 String picAndTextMsg2Xml = xStream.toXML(picAndTextMsg);
 System.out.println(picAndTextMsg2Xml);
 // 第三步,發送xml的格式信息給微信服務器,服務器轉發給用戶
 PrintWriter printWriter = resp.getWriter();
 printWriter.print(picAndTextMsg2Xml);
 }
}

 •TestMsg.java(普通文字消息bean)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package com.gist.bean;
 
/**
 * @author 高遠</n> 郵箱:[email protected]</n> 博客 http://blog.csdn.net/wgyscsf</n>
 *  編寫時期 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(圖文消息內部Article bean)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package com.gist.bean;
 
/**
 * @author 高遠</n> 郵箱:[email protected]</n> 博客 http://blog.csdn.net/wgyscsf</n>
 *  編寫時期 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(圖文消息 bean)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package com.gist.bean;
 
import java.util.List;
 
/**
 * @author 高遠</n> 郵箱:[email protected]</n> 博客 http://blog.csdn.net/wgyscsf</n>
 *  編寫時期 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;
 }
 
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://blog.csdn.net/wgyscsf/article/details/51057162

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 1024国产基地永久免费 | 手机av | 校园春色自拍偷拍 | 精品一区二区三区高清免费不卡 | 2021国产精品露脸在线 | 99九九精品视频 | 午夜爱爱爱爱爽爽爽视频网站 | 数学老师扒开腿让我爽快 | 调教催眠 | 青青青久久久 | 欧美亚洲桃花综合 | 亚洲AV午夜福利精品香蕉麻豆 | 亚洲国产精品无码中文字幕 | 毛片免费视频观看 | 欧美精品亚洲精品日韩专区va | 男人天堂资源网 | 无人区免费一二三四乱码 | 九九热综合 | 日本h片在线| 国产在视频线精品视频 | 欧美亚洲天堂 | 九色PORNY真实丨国产大胸 | 成人aaaa | 色老板成人永久免费视频 | ts人妖国产一区 | 四神集团1涨奶是第几章 | 日本天堂视频 | 免费被黄网站在观看 | 二次元美女扒开内裤露尿口 | 大学生按摩黄a级中文片 | 精品在线免费播放 | 国产免费视频 | 91亚洲一区二区在线观看不卡 | 免费特黄一级欧美大片在线看 | 亚洲狠狠婷婷综合久久蜜桃 | 免费在线观看成年人视频 | 美女被躁了在线观看视频 | 国产一区二区免费不卡在线播放 | 日本高清va不卡视频在线观看 | 我年轻漂亮的继坶2中字在线播放 | 好大好湿好硬好爽好深免费视频 |