+发表新主题
查看: 1621|回复: 0

[代码片段] java版,微信公众平台新手入门第一节

[复制链接]

[代码片段] java版,微信公众平台新手入门第一节

[复制链接]
风的传说自由 发表于 2015-10-12 15:29:32 浏览:  1621 回复:  0 [显示全部楼层] |只看大图 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
java版,微信公众平台新手入门第一节
java版 微信公众平台开发
配置开发者中心
完成关注时内容回复
配置开发者中心然后启用配置

152831izccp4cz6df5lcod.jpg




新建项目配置一个servlet进行接收微信发的消息
web.xml
  1. <servlet>
  2.     <servlet-name>WechatServlet</servlet-name>
  3.     <servlet-class>com.demo.servlet.WechatServlet</servlet-class>
  4.   </servlet>
  5.   <servlet-mapping>
  6.     <servlet-name>WechatServlet</servlet-name>
  7.     <url-pattern>/wechat.servlet</url-pattern>
  8.   </servlet-mapping>
复制代码
WechatServlet.java
  1. public void doGet(HttpServletRequest request, HttpServletResponseresponse)throws ServletException, IOException {
  2.       request.setCharacterEncoding("UTF-8");
  3.       response.setCharacterEncoding("UTF-8");
  4.       
  5.       String encryptType = request.getParameter("encrypt_type");
  6.       /** 读取接收到的xml消息 */
  7.       StringBuffer sb = new StringBuffer();
  8.       InputStream is = request.getInputStream();
  9.       InputStreamReader isr = new InputStreamReader(is, "UTF-8");
  10.       BufferedReader br = new BufferedReader(isr);
  11.       String s = "";
  12.       while ((s = br.readLine()) != null) {
  13.         sb.append(s);
  14.       }
  15.       String xml = sb.toString(); //接收到微信端发送过来的xml数据
  16.       
  17.       String result = "";
  18.       /** 判断是否是微信接入激活验证,只有首次接入验证时才会收到echostr参数,此时需要把它直接返回  */
  19.       String echostr = request.getParameter("echostr");
  20.       if (echostr != null && echostr.length() > 1) {
  21.         result = echostr;
  22.       } else {
  23.         if("".equals(xml)){
  24.            request.getRequestDispatcher("res.jsp").forward(request,response);
  25.            return;
  26.         }
  27.         
  28.         //解析微信发来的xml数据
  29.         System.out.println("自己的业务逻辑处理");
  30.       }
  31.       try {
  32.         OutputStream os = response.getOutputStream();
  33.         os.write(result.getBytes("UTF-8"));
  34.         os.flush();
  35.         os.close();
  36.       } catch (Exception e) {
  37.         e.printStackTrace();
  38.       }
  39.    }
  40.    public void doPost(HttpServletRequest request, HttpServletResponseresponse)
  41.         throws ServletException, IOException {
  42.       doGet(request, response);
  43.    }
复制代码
WeChatProcess.java
  1.    /**
  2.     * 解析处理xml
  3.     */
  4.    public String processWechatMag(String xml){
  5.       
  6.       /** 解析xml数据 */
  7.       ReceiveXmlEntity xmlEntity = new ReceiveXmlProcess().getMsgEntity(xml);
  8.       
  9.       String result = "";
  10.       
  11.       
  12.       //点击事件      
  13.       if("event".equals(xmlEntity.getMsgType())){
  14.         
  15.         //点击关注
  16.         if("subscribe".equals(xmlEntity.getEvent())){
  17.            result = "欢迎关注";
  18.         }
  19.         
  20.         //取消关注
  21.         if("unsubscribe".equals(xmlEntity.getEvent())){
  22.            result = "取消关注";
  23.         }
  24.         
  25.       }
  26.       
  27.       
  28.       result = newFormatXmlProcess().formatXmlAnswer(xmlEntity.getFromUserName(),xmlEntity.getToUserName(), result);
  29.       
  30.       return result;
  31.    }
复制代码
FormatXmlProcess.java
  1.    /**
  2.     * 封装文字类的返回消息
  3.     * @param to
  4.     * @param from
  5.     * @param content
  6.     * @return
  7.     */
  8.    public String formatXmlAnswer(String to, String from, Stringcontent) {
  9.       StringBuffer sb = new StringBuffer();
  10.       Date date = new Date();
  11.       sb.append("<xml><ToUserName><![CDATA[");
  12.       sb.append(to);
  13.       sb.append("]]></ToUserName><FromUserName><![CDATA[");
  14.       sb.append(from);
  15.       sb.append("]]></FromUserName><CreateTime>");
  16.       sb.append(date.getTime());
  17.     sb.append("</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[");
  18.       sb.append(content);
  19.       sb.append("]]></Content><FuncFlag>0</FuncFlag></xml>");
  20.       return sb.toString();
  21.    }
复制代码

回复

使用道具 举报


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版| 赣南网

© 2013-2016 Comsenz Inc. Powered by Discuz! X3.4

用微信扫一扫

赣南网