![【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】微信服務(wù)器post消息體的接收示例_第1頁(yè)](http://file4.renrendoc.com/view/a86bd1cb8b20c18a482fe934e4de1fde/a86bd1cb8b20c18a482fe934e4de1fde1.gif)
![【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】微信服務(wù)器post消息體的接收示例_第2頁(yè)](http://file4.renrendoc.com/view/a86bd1cb8b20c18a482fe934e4de1fde/a86bd1cb8b20c18a482fe934e4de1fde2.gif)
![【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】微信服務(wù)器post消息體的接收示例_第3頁(yè)](http://file4.renrendoc.com/view/a86bd1cb8b20c18a482fe934e4de1fde/a86bd1cb8b20c18a482fe934e4de1fde3.gif)
![【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】微信服務(wù)器post消息體的接收示例_第4頁(yè)](http://file4.renrendoc.com/view/a86bd1cb8b20c18a482fe934e4de1fde/a86bd1cb8b20c18a482fe934e4de1fde4.gif)
![【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】微信服務(wù)器post消息體的接收示例_第5頁(yè)](http://file4.renrendoc.com/view/a86bd1cb8b20c18a482fe934e4de1fde/a86bd1cb8b20c18a482fe934e4de1fde5.gif)
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】微信服務(wù)器post消息體的接收示例
這篇文章主要介紹了微信服務(wù)器post消息體的接收示例,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓在下帶著大家一起了解一下。微信服務(wù)器post消息體的接收(一)消息類型和消息格式上面有說(shuō)道我們所有的和微信服務(wù)器之間進(jìn)行溝通基本都是通過(guò)post消息體完成的,首先我們了解下消息體的類型,大致類型有兩種:普通消息類型:文本消息、圖片消息、語(yǔ)音消息、視頻消息、小視頻消息、地理位置消息、鏈接消息事件消息類型:關(guān)注/取消關(guān)注事件、掃描帶參數(shù)二維碼事件、上報(bào)地理位置事件、自定義菜單事件、點(diǎn)擊菜單拉取消息時(shí)的事件推送、點(diǎn)擊菜單跳轉(zhuǎn)鏈接時(shí)的事件推送消息類型:微信服務(wù)端推送的所有消息體的類型格式都是xml格式;(二)消息重試機(jī)制微信服務(wù)器在五秒內(nèi)收不到響應(yīng)會(huì)斷掉連接,并且重新發(fā)起請(qǐng)求,總共重試三次。假如服務(wù)器無(wú)法保證在五秒內(nèi)處理并回復(fù),可以直接回復(fù)空串,微信服務(wù)器不會(huì)對(duì)此作任何處理,并且不會(huì)發(fā)起重試,但是這里后期可以使用【客服消息接口】去完成消息再次推送。(三)消息接收處理在前面我們有說(shuō)道微信的消息體是采用xml格式,那么我在這里寫(xiě)了一個(gè)MessageUtil去做消息格式的處理,大致代碼如下:package
com.cuiyongzhi.wechat.util;
import
java.io.InputStream;
import
java.io.Writer;
import
java.util.HashMap;
import
java.util.List;
import
java.util.Map;
import
javax.servlet.http.HttpServletRequest;
import
org.dom4j.Document;
import
org.dom4j.Element;
import
org.dom4j.io.SAXReader;
import
com.thoughtworks.xstream.XStream;
import
com.thoughtworks.xstream.core.util.QuickWriter;
import
com.thoughtworks.xstream.io.HierarchicalStreamWriter;
import
com.thoughtworks.xstream.io.xml.PrettyPrintWriter;
import
com.thoughtworks.xstream.io.xml.XppDriver;
/**
*
ClassName:
MessageUtil
*
@Description:
消息工具類
*
@author
dapengniao
*
@date
2016年3月7日
上午10:05:04
*/
public
class
MessageUtil
{
/**
*
返回消息類型:文本
*/
public
static
final
String
RESP_MESSAGE_TYPE_TEXT
=
"text";
/**
*
返回消息類型:音樂(lè)
*/
public
static
final
String
RESP_MESSAGE_TYPE_MUSIC
=
"music";
/**
*
返回消息類型:圖文
*/
public
static
final
String
RESP_MESSAGE_TYPE_NEWS
=
"news";
/**
*
請(qǐng)求消息類型:文本
*/
public
static
final
String
REQ_MESSAGE_TYPE_TEXT
=
"text";
/**
*
請(qǐng)求消息類型:圖片
*/
public
static
final
String
REQ_MESSAGE_TYPE_IMAGE
=
"image";
/**
*
請(qǐng)求消息類型:鏈接
*/
public
static
final
String
REQ_MESSAGE_TYPE_LINK
=
"link";
/**
*
請(qǐng)求消息類型:地理位置
*/
public
static
final
String
REQ_MESSAGE_TYPE_LOCATION
=
"location";
/**
*
請(qǐng)求消息類型:音頻
*/
public
static
final
String
REQ_MESSAGE_TYPE_VOICE
=
"voice";
/**
*
請(qǐng)求消息類型:推送
*/
public
static
final
String
REQ_MESSAGE_TYPE_EVENT
=
"event";
/**
*
事件類型:subscribe(訂閱)
*/
public
static
final
String
EVENT_TYPE_SUBSCRIBE
=
"subscribe";
/**
*
事件類型:unsubscribe(取消訂閱)
*/
public
static
final
String
EVENT_TYPE_UNSUBSCRIBE
=
"unsubscribe";
/**
*
事件類型:CLICK(自定義菜單點(diǎn)擊事件)
*/
public
static
final
String
EVENT_TYPE_CLICK
=
"CLICK";
/**
*
@Description:
解析微信發(fā)來(lái)的請(qǐng)求(XML)
*
@param
@param
request
*
@param
@return
*
@param
@throws
Exception
*
@author
dapengniao
*
@date
2016年3月7日
上午10:04:02
*/
@SuppressWarnings("unchecked")
public
static
Map<String,
String>
parseXml(HttpServletRequest
request)
throws
Exception
{
//
將解析結(jié)果存儲(chǔ)在HashMap中
Map<String,
String>
map
=
new
HashMap<String,
String>();
//
從request中取得輸入流
InputStream
inputStream
=
request.getInputStream();
//
讀取輸入流
SAXReader
reader
=
new
SAXReader();
Document
document
=
reader.read(inputStream);
//
得到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());
//
釋放資源
inputStream.close();
inputStream
=
null;
return
map;
}
@SuppressWarnings("unused")
private
static
XStream
xstream
=
new
XStream(new
XppDriver()
{
public
HierarchicalStreamWriter
createWriter(Writer
out)
{
return
new
PrettyPrintWriter(out)
{
//
對(duì)所有xml節(jié)點(diǎn)的轉(zhuǎn)換都增加CDATA標(biāo)記
boolean
cdata
=
true;
@SuppressWarnings("rawtypes")
public
void
startNode(String
name,
Class
clazz)
{
super.startNode(name,
clazz);
}
protected
void
writeText(QuickWriter
writer,
String
text)
{
if
(cdata)
{
writer.write("<![CDATA[");
writer.write(text);
writer.write("]]>");
}
else
{
writer.write(text);
}
}
};
}
});
}在這個(gè)方法體里需要用到部分依賴,需要在pom文件加入如下部分:<!--
xml
-->
<dependency>
<groupId>org.apache.directory.studio</groupId>
<artifactId>org.dom4j.dom4j</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.8</version>
</dependency>然后將我們的WechatSecurityController中的post方法修改為如下,用于做消息的接收和處理:@RequestMapping(value
=
"security",
method
=
RequestMethod.POST)
//
post方法用于接收微信服務(wù)端消息
public
void
DoPost(HttpServletRequest
request,HttpServletResponse
response)
{
System.out.println("這是post方法!");
try{
Map<String,
String>
map=MessageUtil.p
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司在職員工培訓(xùn)服務(wù)合同書(shū)
- 礦山企業(yè)安全生產(chǎn)許可證頒發(fā)與管理作業(yè)指導(dǎo)書(shū)
- 反擔(dān)保合同協(xié)議1
- 游戲美術(shù)設(shè)計(jì)制作實(shí)戰(zhàn)手冊(cè)作業(yè)指導(dǎo)書(shū)
- 針紡織品銷(xiāo)售購(gòu)銷(xiāo)合同
- 小學(xué)二年級(jí)數(shù)學(xué)上冊(cè)口算
- 2025年紹興a2貨運(yùn)從業(yè)資格證模擬考試題
- 2024-2025學(xué)年高中語(yǔ)文專題一小說(shuō)家想說(shuō)些什么第1課在酒樓上學(xué)案蘇教版選修短篇小說(shuō)蚜
- 七年級(jí)班級(jí)工作總結(jié)
- 四年級(jí)第一學(xué)期德育工作計(jì)劃
- 普外腹腔鏡手術(shù)護(hù)理常規(guī)
- 2024年全國(guó)職業(yè)院校技能大賽(礦井災(zāi)害應(yīng)急救援賽項(xiàng))考試題庫(kù)(含答案)
- 《預(yù)制高強(qiáng)混凝土風(fēng)電塔筒生產(chǎn)技術(shù)規(guī)程》文本附編制說(shuō)明
- C語(yǔ)言程序設(shè)計(jì) 教案
- 2025新譯林版英語(yǔ)七年級(jí)下單詞表
- 海洋工程設(shè)備保溫保冷方案
- 主干光纜、支線光纜線路中斷應(yīng)急預(yù)案
- 跨學(xué)科主題學(xué)習(xí)的思考與策略
- 文藝演出排練指導(dǎo)服務(wù)合同
- 醫(yī)院消防安全培訓(xùn)課件(完美版)
- 行政法-9行政確認(rèn)
評(píng)論
0/150
提交評(píng)論