package com.yunhui.wx.util;
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;
import com.yunhui.wx.bean.response.*;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.slf4j.Logger;
import javax.servlet.http.HttpServletRequest;
import java.io.InputStream;
import java.io.Writer;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Author: Yun
* @Description:
* @Date: Created in 2017-11-29 13:59
*/
public class MessageUtils {
// 请求消息类型:文本
public static final String REQ_MESSAGE_TYPE_TEXT = "text";
// 请求消息类型:图片
public static final String REQ_MESSAGE_TYPE_IMAGE = "image";
// 请求消息类型:语音
public static final String REQ_MESSAGE_TYPE_VOICE = "voice";
// 请求消息类型:视频
public static final String REQ_MESSAGE_TYPE_VIDEO = "video";
// 请求消息类型:小视频
public static final String REQ_MESSAGE_TYPE_SHORTVIDEO = "shortvideo";
// 请求消息类型:地理位置
public static final String REQ_MESSAGE_TYPE_LOCATION = "location";
// 请求消息类型:链接
public static final String REQ_MESSAGE_TYPE_LINK = "link";
// 请求消息类型:事件推送
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";
// 事件类型:scan(用户已关注时的扫描带参数二维码)
public static final String EVENT_TYPE_SCAN = "scan";
// 事件类型:LOCATION(上报地理位置)
public static final String EVENT_TYPE_LOCATION = "LOCATION";
// 事件类型:CLICK(自定义菜单)
public static final String EVENT_TYPE_CLICK = "CLICK";
// 响应消息类型:文本
public static final String RESP_MESSAGE_TYPE_TEXT = "text";
// 响应消息类型:图片
public static final String RESP_MESSAGE_TYPE_IMAGE = "image";
// 响应消息类型:语音
public static final String RESP_MESSAGE_TYPE_VOICE = "voice";
// 响应消息类型:视频
public static final String RESP_MESSAGE_TYPE_VIDEO = "video";
// 响应消息类型:音乐
public static final String RESP_MESSAGE_TYPE_MUSIC = "music";
// 响应消息类型:图文
public static final String RESP_MESSAGE_TYPE_NEWS = "news";
private static Logger logger= LogFactory.getLogger();
/**
* 解析微信发来的请求(XML)
*
* @param request
* @return Map<String, String>
* @throws Exception
*/
@SuppressWarnings("unchecked")
public static Map<String, String> parseXml(HttpServletRequest request) throws Exception {
// 将解析结果存储在HashMap中
Map<String, String> map = new HashMap<>();
// 从request中取得输入流
InputStream inputStream = request.getInputStream();
// 读取输入流
SAXReader reader = new SAXReader();
Document document = reader.read(inputStream);
// 得到xml根元素
Element root = document.getRootElement();
// 得到根元素的所有子节点
List<Element> elementList = root.elements();
// 遍历所有子节点
for (Element e : elementList){
map.put(e.getName(), e.getText());
logger.info("========******["+e.getName()+":"+e.getText()+"]******========");
}
// 释放资源
inputStream.close();
return map;
}
/**
* 扩展xstream使其支持CDATA
*/
private static XStream xstream = new XStream(new XppDriver() {
@Override
public HierarchicalStreamWriter createWriter(Writer out) {
return new PrettyPrintWriter(out) {
// 对所有xml节点的转换都增加CDATA标记
boolean cdata = true;
@Override
public void startNode(String name, Class clazz) {
super.startNode(name, clazz);
}
@Override
protected void writeText(QuickWriter writer, String text) {
if (cdata) {
writer.write("<![CDATA[");
writer.write(text);
writer.write("]]>");
} else {
writer.write(text);
}
}
};
}
});
/**
* 文本消息对象转换成xml
*
* @param textMessage 文本消息对象
* @return xml
*/
public static String messageToXml(TextRespMessage textMessage) {
xstream.alias("xml", textMessage.getClass());
return xstream.toXML(textMessage);
}
/**
* 图片消息对象转换成xml
*
* @param imageMessage 图片消息对象
* @return xml
*/
public static String messageToXml(ImageRespMessage imageMessage) {
xstream.alias("xml", imageMessage.getClass());
return xstream.toXML(imageMessage);
}
/**
* 语音消息对象转换成xml
*
* @param voiceMessage 语音消息对象
* @return xml
*/
public static String messageToXml(VoiceRespMessage voiceMessage) {
xstream.alias("xml", voiceMessage.getClass());
return xstream.toXML(voiceMessage);
}
/**
* 视频消息对象转换成xml
*
* @param videoMessage 视频消息对象
* @return xml
*/
public static String messageToXml(VideoRespMessage videoMessage) {
xstream.alias("xml", videoMessage.getClass());
return xstream.toXML(videoMessage);
}
/**
* 音乐消息对象转换成xml
*
* @param musicMessage 音乐消息对象
* @return xml
*/
public static String messageToXml(MusicRespMessage musicMessage) {
xstream.alias("xml", musicMessage.getClass());
return xstream.toXML(musicMessage);
}
/**
* 图文消息对象转换成xml
*
* @param articleRespMessage 图文消息对象
* @return xml
*/
public static String messageToXml(ArticleRespMessage articleRespMessage) {
xstream.alias("xml", articleRespMessage.getClass());
xstream.alias("item", new Article().getClass());
return xstream.toXML(articleRespMessage);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Springboot开发微信公众号智能机器人(基于图灵api)
共96个文件
xml:57个
java:37个
properties:1个
4星 · 超过85%的资源 需积分: 50 65 下载量 40 浏览量
2018-01-05
15:50:23
上传
评论 8
收藏 62KB ZIP 举报
温馨提示
使用springboot技术开发的微信智能机器人,,机器人问答模块是使用图灵机器人的免费问答api接口,每天可以免费使用2000余次。 代码下载到本地之后,建议最好使用idea打开,作为maven工程导入。。(建议对springboot和微信开发有点了解的人下载。)导入好之后,只需要修改一些微信端的配置参数和图灵机器人api的配置参数即可使用。。如果还不清楚,可去我的博客下的微信分类下找我写的微信智能机器人开发这篇文章。。
资源推荐
资源详情
资源评论
收起资源包目录
wx.zip (96个子文件)
wx
src
main
resources
config
application.properties 86B
java
com
yunhui
wx
service
CoreService.java 5KB
BootStrap.java 367B
robot
common
BaseCommon.java 329B
service
TlRobotService.java 2KB
util
HttpRequestUtil.java 4KB
bean
request
BaseReqMessage.java 700B
response
RobotResponTypeEnum.java 2KB
BaseRespMessage.java 528B
controller
CoreController.java 1KB
util
HttpsRequestUtil.java 5KB
MessageUtils.java 7KB
LogFactory.java 314B
SignUtil.java 3KB
config
MyX509TrustManager.java 894B
bean
button
Button.java 1KB
event
SubscribeEvent.java 206B
BaseEvent.java 1KB
token
Token.java 665B
request
TextReqMessage.java 409B
ImageReqMessage.java 583B
VideoReqMessage.java 644B
LocationReqMessage.java 1KB
BaseReqMessage.java 1KB
VoiceReqMessage.java 602B
LinkReqMessage.java 799B
response
Voice.java 352B
ArticleRespMessage.java 740B
Image.java 329B
VideoRespMessage.java 389B
Video.java 596B
ImageRespMessage.java 375B
TextRespMessage.java 426B
VoiceRespMessage.java 390B
Music.java 1KB
MusicRespMessage.java 389B
Article.java 1KB
BaseRespMessage.java 1KB
.idea
libraries
Maven__dom4j_dom4j_1_6_1.xml 462B
Maven__org_springframework_spring_context_4_3_7_RELEASE.xml 637B
Maven__org_apache_tomcat_embed_tomcat_embed_el_8_5_11.xml 611B
Maven__junit_junit_4_12.xml 455B
Maven__org_apache_httpcomponents_httpcore_4_4_6.xml 563B
Maven__org_springframework_boot_spring_boot_starter_web_1_5_2_RELEASE.xml 720B
Maven__org_apache_tomcat_embed_tomcat_embed_core_8_5_11.xml 625B
Maven__org_springframework_boot_spring_boot_1_5_2_RELEASE.xml 636B
Maven__xpp3_xpp3_min_1_1_4c.xml 486B
Maven__org_slf4j_jcl_over_slf4j_1_7_24.xml 548B
Maven__com_fasterxml_jackson_core_jackson_databind_2_8_7.xml 623B
Maven__org_springframework_spring_web_4_3_7_RELEASE.xml 609B
Maven__org_apache_commons_commons_pool2_2_4_2.xml 570B
Maven__xmlpull_xmlpull_1_1_3_1.xml 498B
Maven__org_springframework_data_spring_data_redis_1_8_1_RELEASE.xml 678B
Maven__commons_codec_commons_codec_1_10.xml 543B
Maven__org_springframework_boot_spring_boot_starter_1_5_2_RELEASE.xml 692B
Maven__com_fasterxml_classmate_1_3_3.xml 522B
Maven__org_hibernate_hibernate_validator_5_3_4_Final.xml 634B
Maven__org_springframework_spring_beans_4_3_7_RELEASE.xml 623B
Maven__ch_qos_logback_logback_classic_1_1_11.xml 575B
Maven__javax_validation_validation_api_1_1_0_Final.xml 611B
Maven__org_apache_tomcat_embed_tomcat_embed_websocket_8_5_11.xml 660B
Maven__org_springframework_spring_tx_4_3_7_RELEASE.xml 602B
Maven__com_fasterxml_jackson_core_jackson_core_2_8_7.xml 595B
Maven__org_springframework_boot_spring_boot_devtools_1_5_2_RELEASE.xml 699B
Maven__org_yaml_snakeyaml_1_17.xml 495B
Maven__org_springframework_spring_context_support_4_3_7_RELEASE.xml 693B
Maven__org_springframework_spring_oxm_4_3_7_RELEASE.xml 609B
Maven__org_hamcrest_hamcrest_core_1_3.xml 532B
Maven__com_thoughtworks_xstream_xstream_1_4_10.xml 559B
Maven__org_springframework_spring_aop_4_3_7_RELEASE.xml 609B
Maven__org_springframework_boot_spring_boot_starter_data_redis_1_5_2_RELEASE.xml 769B
Maven__org_springframework_boot_spring_boot_autoconfigure_1_5_2_RELEASE.xml 734B
Maven__org_springframework_data_spring_data_commons_1_13_1_RELEASE.xml 699B
Maven__org_springframework_boot_spring_boot_starter_logging_1_5_2_RELEASE.xml 748B
Maven__com_fasterxml_jackson_core_jackson_annotations_2_8_0.xml 644B
Maven__org_slf4j_log4j_over_slf4j_1_7_24.xml 562B
Maven__org_slf4j_slf4j_api_1_7_24.xml 513B
Maven__org_springframework_spring_core_4_3_7_RELEASE.xml 616B
Maven__ch_qos_logback_logback_core_1_1_11.xml 554B
Maven__org_jboss_logging_jboss_logging_3_3_0_Final.xml 608B
Maven__org_springframework_data_spring_data_keyvalue_1_2_1_RELEASE.xml 699B
Maven__redis_clients_jedis_2_9_0.xml 494B
Maven__org_springframework_spring_expression_4_3_7_RELEASE.xml 658B
Maven__xml_apis_xml_apis_1_4_01.xml 502B
Maven__org_springframework_boot_spring_boot_starter_tomcat_1_5_2_RELEASE.xml 741B
Maven__org_slf4j_jul_to_slf4j_1_7_24.xml 534B
Maven__org_springframework_spring_webmvc_4_3_7_RELEASE.xml 630B
Maven__org_apache_httpcomponents_httpclient_4_5_2.xml 577B
misc.xml 396B
compiler.xml 618B
wx2.iml 6KB
workspace.xml 21KB
encodings.xml 172B
inspectionProfiles
Project_Default.xml 1KB
modules.xml 258B
pom.xml 2KB
共 96 条
- 1
资源评论
- 留白的云2020-11-16亲 你的博客地址在哪里。我代码跑起来了。
剑火6
- 粉丝: 15
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功