微信&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<String, String> 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<News> newsList = new ArrayList<News>();
		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<News> Articles;
	public int getArticleCount() {
		return ArticleCount;
	}
	public void setArticleCount(int articleCount) {
		ArticleCount = articleCount;
	}
	public List<News> getArticles() {
		return Articles;
	}
	public void setArticles(List<News> 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);
	}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值