当前位置: 首页 > news >正文

合肥瑶海区地图关键词seo排名怎么选

合肥瑶海区地图,关键词seo排名怎么选,下做图软件在哪个网站下载器,上海网站设计图片大家好#xff0c;我是雄雄。交流技术可以进入到我的社区【雄雄的小课堂】 前言 看本篇文章之前#xff0c;可以先看看前面两篇#xff1a; java实现微信服务#xff08;公众#xff09;号用户关注时#xff0c;获取openid#xff0c;安全模式下的加密解密实现 微信公… 大家好我是雄雄。交流技术可以进入到我的社区【雄雄的小课堂】 前言 看本篇文章之前可以先看看前面两篇 java实现微信服务公众号用户关注时获取openid安全模式下的加密解密实现 微信公众平台安全模式下传输xml数据包时解密方式 前面这两篇文章主要实现的当用户关注了服务号或者订阅号之后通过触发事件然后会给开发者配置的接口中传输加密的xml格式数据后台通过解密xml格式数据拿到自己想要的东西。 解密xml数据提取内容 在前两篇文章中也提到过我们开启服务器配置时需要在后台写两个同名接口只是一个是get方式请求另一个是post方式请求具体的在这不在赘述。 现在我们来看看代码的实现。 /*** 接收用户事件* param requestBody* return*/RequestMapping(value /validationWeCat,method RequestMethod.POST)public String validationWeCat(RequestBody String requestBody){if(Strings.isNotBlank(requestBody)){log.info(进入了validationWeCat的post方法由用户触发的,值是:requestBody);//解析xml数据JSONObject jsonObject WeChatUtils.toParseTheXmlData(requestBody);int code jsonObject.getInteger(code);if(code200){//获取关注的密文String miwen jsonObject.getString(encrypt);//解密String jiemiText WeChatUtils.decodeNewUsers(miwen);//解密完之后还是个xml数据继续解析JSONObject jiemiObject WeChatUtils.toParseTheXmlData(jiemiText);if(jiemiObject.getInteger(code)200){//获取消息类型String msgType jiemiObject.getString(msgType);switch (msgType){//文本case text :break;//事件case event ://触发事件执行的方法eventCase(jiemiObject);break;// 语音case voice :break;// 视频case video :break;// 音乐case music :break;// 图文case news :break;// 图片case image :break;// 小视频case shortvideo :break;// 地理位置case location :break;// 链接case link :break;default:break;}}else{log.error(解析xml报错);}}else{log.error(解析xml报错);}}return requestBody;}/*** 触发的是事件* param jsonObject*/public void eventCase(JSONObject jsonObject){//获取事件类型String event jsonObject.getString(event);switch (event){//关注case subscribe ://获取微信号String weChatNum jsonObject.getString(toUserName);//获取openidString openid jsonObject.getString(fromUserName);Member member new Member();member.setWechat(weChatNum);member.setOpenIdGzh(openid);//默认名字是微信用户member.setName(公众号用户);boolean flag saveMember(member);if(!flag){log.error(添加会员报错);}break;//取消关注case unsubscribe :break;// 用户已关注时的事件推送case SCAN :break;// 用户已关注时的事件推送case LOCATION :break;// 点击菜单拉取消息时的事件推送case CLICK :break;// 点击菜单跳转链接时的事件推送case VIEW :break;default:break;}}/*** 添加会员的业务逻辑*/public boolean saveMember(LtMember ltMember){return memberService.save(ltMember);return false;}上面就是添加会员的基本操作涉及到了一个工具类我这边也放出来吧此工具类主要是用来解析xml数据的,代码如下 package org.jeecg.modules.utils;import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.jeecg.modules.config.WeChatContant; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.xml.sax.InputSource;import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import java.io.StringReader; import java.util.HashMap; import java.util.LinkedHashMap;/*** author: muxiongxiong* date: 2022年08月17日 下午 10:06* 公众号雄雄的小课堂* 博客https://blog.csdn.net/qq_34137397* 个人站http://www.穆雄雄.com* 个人站http://www.muxiongxiong.cn* Description: 微信工具类主要是用来加密和解密信息*/ Slf4j public class WeChatUtils {/*** 解析xml数据的工具类* param xmlTest* return*/public static JSONObject toParseTheXmlData(String xmlTest){//new LinkedHashMap() 表示让集合添加的时候有顺序JSONObject jsonObject new JSONObject(new LinkedHashMap());try {DocumentBuilderFactory dbf DocumentBuilderFactory.newInstance();//这里也不知道是啥意思dbf.setFeature(http://apache.org/xml/features/disallow-doctype-decl, true);dbf.setFeature(http://xml.org/sax/features/external-general-entities, false);dbf.setFeature(http://xml.org/sax/features/external-parameter-entities, false);dbf.setFeature(http://apache.org/xml/features/nonvalidating/load-external-dtd, false);dbf.setXIncludeAware(false);dbf.setExpandEntityReferences(false);DocumentBuilder db dbf.newDocumentBuilder();StringReader sr new StringReader(xmlTest);InputSource is new InputSource(sr);Document document db.parse(is);//得到根节点Element root document.getDocumentElement();//用户关注触发事件之后微信传过来加密的信息NodeList encryptNode root.getElementsByTagName(Encrypt);//开发者微信号NodeList toUserNameNode root.getElementsByTagName(ToUserName);//发送方帐号一个OpenIDNodeList fromUserNameNode root.getElementsByTagName(FromUserName);//消息类型eventNodeList msgTypeNode root.getElementsByTagName(MsgType);//事件类型subscribe(订阅)、unsubscribe(取消订阅)NodeList eventNode root.getElementsByTagName(Event);//消息创建时间 整型NodeList createTimeNode root.getElementsByTagName(CreateTime);//事件 KEY 值qrscene_为前缀后面为二维码的参数值NodeList eventKeyNode root.getElementsByTagName(EventKey);//二维码的ticket可用来换取二维码图片NodeList ticketNode root.getElementsByTagName(Ticket);//地理位置纬度NodeList latitudeNode root.getElementsByTagName(Latitude);//地理位置经度NodeList longitudeNode root.getElementsByTagName(Longitude);//地理位置精度NodeList precisionNode root.getElementsByTagName(Precision);//获取该节点下的值,将值添加到jsonobject中if(encryptNode.getLength()0){String encrypt encryptNode.item(0).getTextContent();jsonObject.put(encrypt,encrypt);}if (toUserNameNode.getLength()0) {String toUserName toUserNameNode.item(0).getTextContent();jsonObject.put(toUserName,toUserName);}if (fromUserNameNode.getLength()0) {String fromUserName fromUserNameNode.item(0).getTextContent();jsonObject.put(fromUserName,fromUserName);}if (msgTypeNode.getLength()0) {String msgType msgTypeNode.item(0).getTextContent();jsonObject.put(msgType,msgType);}if (eventNode.getLength()0) {String event eventNode.item(0).getTextContent();jsonObject.put(event,event);}if (createTimeNode.getLength()0) {String createTime createTimeNode.item(0).getTextContent();jsonObject.put(createTime,createTime);}if (eventKeyNode.getLength()0) {String eventKey eventKeyNode.item(0).getTextContent();jsonObject.put(eventKey,eventKey);}if (ticketNode.getLength()0) {String ticket ticketNode.item(0).getTextContent();jsonObject.put(ticket,ticket);}if (latitudeNode.getLength()0) {String latitude latitudeNode.item(0).getTextContent();jsonObject.put(latitude,latitude);}if (longitudeNode.getLength()0) {String longitude longitudeNode.item(0).getTextContent();jsonObject.put(longitude,longitude);}if (precisionNode.getLength()0) {String precision precisionNode.item(0).getTextContent();jsonObject.put(precision,precision);}jsonObject.put(code,200);jsonObject.put(msg,操作成功);}catch (Exception exception){jsonObject.put(code,500);jsonObject.put(msg,出异常了);jsonObject.put(error,exception.getMessage());}return jsonObject;} }}至此就可以实现关注后自动将会员注册到我们实际库中。后面的业务根据这个架构往下写就行就比较简单了。
http://www.sadfv.cn/news/237554/

相关文章:

  • 网站上传模板后sem推广
  • 做网站用什么软件?网站404页面模板
  • 家具做网站企业网站维护建设项目实践报告
  • 信息技术初二做网站网站开发音乐
  • 南通做网站厉害的公司网页模板下载
  • 扫二维码做自己网站小米路由器3 做网站
  • 泰安做网站公司wordpress添加注册页面
  • 做网站备案须知网站开发类投标文件
  • 免费网站建设免代码推广app赚佣金平台有哪些
  • 黔东网站建设青岛公路建设集团网站
  • 蓬莱网站建设价格广告公司管理系统软件
  • 百度网站建设电话wordpress企业官网主题
  • 网站分哪几种wordpress放音乐播放器
  • 金融网站模板源代码腾讯云服务器网站域名备案
  • 做网站的经验和体会云计算公司排名
  • 网站建设实训经验总结网站空间免费
  • led 网站建设网页代理软件
  • 做网站的哪家比较好南宁网站排名优化电话
  • 网站保持排名柬埔寨网站开发
  • 上海建设网站浦东新区污水管网工程wordpress dux主题5.2
  • 建网站怎么弄中文搜索引擎有哪些
  • 贵港网站营销快速seo优化
  • 黄山网站建设策划wordpress字体插件下载
  • 汉子由来 外国人做的网站珠海企业网站建设公司
  • 关于网站建设的调查问卷北京住房和城乡建设部网站首页
  • 银川网站网站建设wordpress横向导航菜单主题
  • 重庆网站建设cq新网站建设的流程
  • 江西做网站多少钱合肥网站建设服务平台
  • iis网站主目录模板网站会员
  • 为什么要做手机网站开发南充房产网最新楼盘最近房价