java 微信 回复_微信java 开发2 发送文本消息并回复

因为用的是springmvc

首先看一下统一接收接口,dispatchWeiXinRequest发放用于区别get还是post

@RequestMapping(value = "/dispatcher")

@ResponseBody

public void dispatcher(HttpServletRequest request,HttpServletResponse response) throws ParseException, org.dom4j.DocumentException {

LOG.info("Execute action's WeiXin:execute() method. Start:{}",System.currentTimeMillis() + "");

try {

/**

* 分发请求

*/

dispatchWeiXinRequest(request, response);

} catch (ServletException e) {

LOG.info("Execute action's WeiXin:execute() method Exception. {}",e.getMessage());

} catch (IOException e) {

LOG.info("Execute action's WeiXin:execute() method Exception. {}",e.getMessage());

}

LOG.info("Execute action's WeiXin:execute() method. End :{}",System.currentTimeMillis() + "");

}

private void dispatchWeiXinRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, ParseException, DocumentException {

if ("GET".equals(request.getMethod().toUpperCase().toString())) {

LOG.info("Execute action's WeiXin:dispatchWeiXinRequest() method. GET");

doGet(request, response);

} else if ("POST".equals(request.getMethod().toUpperCase().toString())) {

LOG.info("Execute action's WeiXin:dispatchWeiXinRequest() method. POST");

doPost(request, response);

}

}post方法

private void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, ParseException, DocumentException {

request.setCharacterEncoding("UTF-8");

response.setCharacterEncoding("UTF-8");

PrintWriter out = response.getWriter();

try {

Map map = MessageUtil.xmlToMap(request);

String fromUserName = map.get("FromUserName");

String toUserName = map.get("ToUserName");

String msgType = map.get("MsgType");

String content = map.get("Content");

String message = null;

if(MessageUtil.MESSAGE_TEXT.equals(msgType)){

if("1".equals(content)){

message = MessageUtil.initText(toUserName, fromUserName, MessageUtil.firstMenu());

}else if("2".equals(content)){

message = MessageUtil.initNewsMessage(toUserName, fromUserName);

}

}

out.print(message);

} finally{

out.close();

}

}

最后看一下MessageUtil

/**

* 图文消息的组装

* @param toUserName

* @param fromUserName

* @return

*/

public static String initNewsMessage(String toUserName,String fromUserName){

String message = null;

List newsList = new ArrayList();

NewsMessage newsMessage = new NewsMessage();

News news = new News();

news.setTitle("欢迎");

news.setDescription("Hello World。");

String localImg = "D:\\cc.jpg";

File srcFile = new File(localImg);

String tarImg = ServletContextUtil.get().getRealPath("/images") + "\\cc2.jpg";

File tarFile = new File(tarImg);

if(!tarFile.exists()) {

try {

FileCopyUtils.copy(srcFile,tarFile);

} catch (IOException e) {

e.printStackTrace();

}

}

news.setPicUrl(WeiXinPropUtil.WebDomain + "/WeiXin_SSM/images/cc2.jpg");

news.setUrl("www.imooc.com");

newsList.add(news);

newsMessage.setToUserName(fromUserName);

newsMessage.setFromUserName(toUserName);

newsMessage.setCreateTime(new Date().getTime());

newsMessage.setMsgType(MESSAGE_NEWS);

newsMessage.setArticles(newsList);

newsMessage.setArticleCount(newsList.size());

message = newsMessageToXml(newsMessage);

return message;

}

public class News {

private String Title;

private String Description;

private String PicUrl;

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;

}

}

public class NewsMessage extends BaseMessage{

private int ArticleCount;

private List Articles;

public int getArticleCount() {

return ArticleCount;

}

public void setArticleCount(int articleCount) {

ArticleCount = articleCount;

}

public List getArticles() {

return Articles;

}

public void setArticles(List articles) {

Articles = articles;

}

}

/**

* 图文消息转为xml

* @param newsMessage

* @return

*/

public static String newsMessageToXml(NewsMessage newsMessage){

XStream xstream = new XStream();

xstream.alias("xml", newsMessage.getClass());

xstream.alias("item", new News().getClass());

return xstream.toXML(newsMessage);

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560496.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 06_JAVA06 数组

1.设计思路:首先设置长度为10的数组,设置Random引用对象,在循环中生成一个随机数存储在数组中,累加和,利用对话框输出结果。2.程序流程图:3.源程序代码:1 //2016/11/062 //随机生成10个数&#…

java service 事物_Service 事务(JdbcUtils 升级)

1. DAO 事务// 在 DAO 中处理事务真是"小菜一碟"public void xxx(){Connection con null;try{con JdbcUtils.getConnection();con.setAutoCommit(false); // 开启事务QueryRunner qr new QueryRunner();String sql ...;Object[] params ...;qr.update(con,sql,p…

c++ const限定符

const限定符 const对像一旦创建,其值就不能发生改变。const对象必须初始化 const int i get_size();//正确,运行时初始化。 const int j 1;//正确,编译时初始化。j 2;//错误,j是一个常量,试图对其赋值行为将发生错误…

java 8.0 sinffer_jpcap 配置方法,问题解决,模拟sniffer程序。(附JAVA程序,jar,dll包等环境)...

一、 Eclipse环境下安装与配置Jpcap相关源程序、jpcap jar包,dll包,帮助文档。1、下载安装winpcap2、jpcap官方文件中lib包下,有两个文件,jpcap.dll和jpcap.jar。jpcap.dll-->JAVA安装路径/jre1.6.0_06/bin (JRE目录)jpcap.j…

c++ 参数传递

参数传递: 形参(parameter)和实参(argument): int num (int a, int b); int num (int a, int b){return ab; }//在函数的声明或者定义里,由由0个或多个形参组成的列表。int main(){int n1,m1;co…

c++定义成员函数

1.定义和声明成员函数的方式和普通函数差不多。成员函数的声明必须在类的内部,他的定义则即可以在类的内部也可以在类的外部。非成员函数的定义和声明都在类的外部。 struct Sales_data{std::string isbn() const { return bookNo; }double avg_price() const;std:…

java拖动图片拼图_求教,我的这个拼图程序中的移动图片的改怎么做

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼public class button extends JPanel implements MouseListener, ActionListener {/****/private static final long serialVersionUID 1L;private JButton[] button;private ImageIcon[] puzzlep;private JButton kbbutton;priva…

c++函数返回值是一个引用

函数返回值是一个引用的情况: 1.值是如何被返回的: 返回的值用于初始化调用点的一个临时量,该临时量就是函数调用的结果。 如果函数返回引用,则该引用仅是它所引对象的一个别名。 2.不能返回局部对象的引用或指针:…

java视频压缩 lz4_一种视频序列帧的压缩方法、解压方法及装置与流程

技术特征:1.一种视频序列帧的压缩方法,其特征在于,包括:在视频帧数据压缩时,对解析到的第一帧视频帧数据使用lz4算法进行压缩并保存至视频文件中;对之后解析到的每一帧视频帧数据都与之前一帧视频帧数据进行…

c++ 构造函数

构造函数: 类通过一个或几个特殊的成员函数来控制其对象的初始化进程,这些函数叫构造函数。构造函数的任务是初始化类对象的数据成员。 构造函数名字和类名相同,构造函数没有返回类型。构造函数也有一个可能为空的参数列表和一个可能为空的…

js java post提交_如何从Express.js发送Post请求到另一个服务器(Java)?

小编典典您正在重复请求,并为发布请求重新分配变量。我已经更新了您的代码并与requestb.in一起对其进行了测试var express require(express);var querystring require(querystring);var http require(http);var app express();app.get(/, function (req, res) {…

c++ 访问控制与封装

访问控制与封装 文章目录访问说明符:友元:封装好处:class Sales_data{public://作为接口的一部分,构造函数和部分成员函数isbn,combine紧跟在public说明符之后。Sales_data() default;Sales_data(const std::string &…

c++ 命名空间的using声明

命名空间的using声明: 除了内置类型之外,c语言还定义了一个内容丰富的抽象数据类型库。 访问库中名字的一个简单方法就是通过using。 我们用到的库函数基本上都属于命名空间std,可以通过::(作用域操作符)从左侧作用…

mysql工作中遇到的问题_MySQL工作中遇到的问题记录

1:log_slave_updates:从库1搭建级联从库2,从库1需要开启log_slave_updates,修改/etc/my.cnf,增加一行log_slave_updates1,重启数据库。http://blog.itpub.net/12679300/viewspace-1319263/2:ERROR 1418 (HY…

java 基本格式

java基本格式: 所有的java程序必须放在一个类之中才可以执行。 主方法main是整个java程序的入口,所有程序都是从public static void main(String[] args)开始运行的。 类定义有两种形式: public class:文件名和类名一致。每一个*.java文件…

用java画海绵宝宝_java 方法的重载

方法的重载:一个类中允许出现一个以上的同名方法,必须保证同名方法的参数列表不同好处:方便阅读,优化程序设计重载规则:重载方法名相同,但每个重载方法都必须有一个独一无二的参数类型列表,方法…

Java 构造方法

Java构造方法: 通过构造方法,在对象最初被创建时就完成对其成员变量的初始化。 构造方法特点: 构造方法名称和类名相同。构造方法不返回任何数据,也不用void声明。在创建对象时,系统自动调用类的构造方法。构造方法…

ajax 链接java_如何使用ajax将下拉菜单链接到表

以下是实现您的功能的示例静态代码 . 您可以使用sql和php添加动态内容 .的index.phpCource 1Cource 2Cource 3Cource 4$("#courses").change(function(){var course $(this).val();$.post(data.php, {course: course}, function(response){// your drop down box is…

Java 作用域修饰符

Java作用域修饰符 在java语言中,可以使用访问修饰符来规定对类、变量、方法和构造方法的访问。 文章目录一、访问修饰符二、非访问修饰符一、访问修饰符 1.私有的访问修饰符private: 声明为私有访问类型的变量只能通过类中的公共方法被外部类访问。 …

python xgboost实战_史上最详细的XGBoost实战

0. 环境介绍Python 版 本: 3.6.2操作系统  : Windows集成开发环境: PyCharm1. 安装Python环境安装Python首先,我们需要安装Python环境。本人选择的是64位版本的Python 3.6.2。去Python官网https://www.python.org/选择相应的版本…