


Explication détaillée des étapes 2 du processus de développement de compte public Java+WeChat
L'article précédent résumait la première partie du développement de la plateforme publique WeChat en langage Java - construction de l'environnement et accès au développement, cet article résume la réception et la réponse des messages.
Lors de la connexion à la plateforme publique WeChat, WeChat enverra une demande Get à notre méthode de vérification. Ensuite, lorsque nous recevrons le message, WeChat nous enverra une Demande de publication et enverra et recevra des données au format XML.
Regardez la structure du package XML du message texte ordinaire qui nous est envoyé par WeChat :
> >
Description du document officiel : >
Après avoir compris, commencez à taper le code :1.
Convertissez le format XML reçu en un objet de collection (Map)
Sous le package Util, créez une nouvelle classe d'outil MessageUtil :2. besoin d'écrire une méthode pour convertir notre objet message est converti en XML.
Ici, nous devons toujours utiliser un package jar : xstream.jar, la méthode d'importation est la même que dom4j. (Un autre point à noter, le xstream que j'ai importé auparavant était la version 1.4 et le message de réponse manquait toujours de contenu, donc après plusieurs tentatives, j'ai changé la version du package jar en 1.3 et le message de réponse a réussi. Je voudrais expliquer que le la raison spécifique est temporairement inconnue. Racontez cet écueil à ceux qui l'apprendront plus tard pour éviter de perdre du temps)Bien sûr, tout d'abord, nous devons créer une nouvelle classe d'entité TextMessage pour porter l'objet message Le 6. Les attributs de la classe d'entité correspondent aux messages WeChat ci-dessus qui nous ont été envoyés. 6 paramètres du texte XML, et fournissent les méthodes Get/Set correspondantes et la construction de paramètres vides/paramètres complets, qui ne seront pas décrits ici :
Ensuite, nous écrivons une méthode pour convertir cet objet Class de message texte, le convertissons au format XML et renvoyons :
/** * 新建方法,将接收到的XML格式,转化为Map对象 * @param request 将request对象,通过参数传入 * @return 返回转换后的Map对象 */ public static Map<String, String> xmlToMap(HttpServletRequest request) throws IOException, DocumentException{ Map<String, String> map = new HashMap<String, String>(); //从dom4j的jar包中,拿到SAXReader对象。 SAXReader reader = new SAXReader(); InputStream is = request.getInputStream();//从request中,获取输入流 Document doc = reader.read(is);//从reader对象中,读取输入流 Element root = doc.getRootElement();//获取XML文档的根元素 List<Element> list = root.elements();//获得根元素下的所有子节点 for (Element e : list) { map.put(e.getName(), e.getText());//遍历list对象,并将结果保存到集合中 } is.close(); return map; }
Après avoir écrit les deux méthodes de traitement ci-dessus, implémentons [. réception et réponse du message],
Retournez à notre Servlet d'origine et écrivez dans la méthode doPost :private String ToUserName;//开发者微信号 private String FromUserName;//发送方账号 private Long CreateTime;//消息创建时间 private String MsgType;//消息类型 private String Content;//文本消息内容 private String MsgId;//消息id,64位整型
/** * 将文本消息对象转化成XML格式 * @param message 文本消息对象 * @return 返回转换后的XML格式 */ public static String textMessageToXml(TextMessage message){ XStream xs = new XStream(); //由于转换后xml根节点默认为class类,需转化为<xml> xs.alias("xml", message.getClass()); return xs.toXML(message); }
Package Jar requis pour le projet :
Lien : https://pan.baidu.com/s/1n7WXoDXN97AwQPjgiyz5gw Mot de passe : m5neRecommandations associées :public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); PrintWriter out = response.getWriter(); try { //将request请求,传到Message工具类的转换方法中,返回接收到的Map对象 Map<String, String> map = MessageUtil.xmlToMap(request); //从集合中,获取XML各个节点的内容 String ToUserName = map.get("ToUserName"); String FromUserName = map.get("FromUserName"); String CreateTime = map.get("CreateTime"); String MsgType = map.get("MsgType"); String Content = map.get("Content"); String MsgId = map.get("MsgId"); if(MsgType.equals("text")){//判断消息类型是否是文本消息(text) TextMessage message = new TextMessage(); //原来【接收消息用户】变为回复时【发送消息用户】 message.setFromUserName(ToUserName); message.setToUserName(FromUserName); message.setMsgType("text"); message.setCreateTime(new Date().getTime());//创建当前时间为消息时间 message.setContent("您好,"+FromUserName+"\n我是:"+ToUserName +"\n您发送的消息类型为:"+MsgType+"\n您发送的时间为"+CreateTime +"\n我回复的时间为:"+message.getCreateTime()+"\n您发送的内容是:"+Content); //调用Message工具类,将对象转为XML字符串 str = MessageUtil.textMessageToXml(message); System.out.println(str); out.print(str); } } catch (DocumentException e) { e.printStackTrace(); }finally{ out.close(); } } catch (DocumentException e) { e.printStackTrace(); }finally{ out.close(); } }
Explication détaillée de l'exemple de développement de paiements de compte public WeChat (java)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Dépannage et solutions au logiciel de sécurité de l'entreprise qui fait que certaines applications ne fonctionnent pas correctement. De nombreuses entreprises déploieront des logiciels de sécurité afin d'assurer la sécurité des réseaux internes. ...

Lorsque vous utilisez MyBatis-Plus ou d'autres cadres ORM pour les opérations de base de données, il est souvent nécessaire de construire des conditions de requête en fonction du nom d'attribut de la classe d'entité. Si vous manuellement à chaque fois ...

Le traitement de la cartographie des champs dans l'amarrage du système rencontre souvent un problème difficile lors de l'exécution d'amarrage du système: comment cartographier efficacement les champs d'interface du système a ...

Solutions pour convertir les noms en nombres pour implémenter le tri dans de nombreux scénarios d'applications, les utilisateurs peuvent avoir besoin de trier en groupe, en particulier en un ...

Commencez le printemps à l'aide de la version IntelliJideaultimate ...

Lorsque vous utilisez TkMyBatis pour les requêtes de base de données, comment obtenir gracieusement les noms de variables de classe d'entité pour créer des conditions de requête est un problème courant. Cet article épinglera ...

Conversion des objets et des tableaux Java: Discussion approfondie des risques et des méthodes correctes de la conversion de type de distribution De nombreux débutants Java rencontreront la conversion d'un objet en un tableau ...

Comment la solution de mise en cache Redis réalise-t-elle les exigences de la liste de classement des produits? Pendant le processus de développement, nous devons souvent faire face aux exigences des classements, comme l'affichage d'un ...
