Cet article présente principalement les informations pertinentes sur le développement Java des comptes publics WeChat pour recevoir et répondre passivement aux messages ordinaires. Les amis dans le besoin peuvent s'y référer
Après avoir terminé l'article précédent, comment accéder au public WeChat. comptes, cet article en parlera. La fonction la plus basique du compte officiel WeChat : recevoir et répondre aux messages ordinaires. En parlant de messages ordinaires, que sont les messages ordinaires définis par les comptes officiels de WeChat ? Les messages ordinaires reçus comme mentionné dans la documentation du développeur WeChat incluent les catégories suivantes :
1. Message texte
2.ImageMessage
3. Message vocal
4.VidéoMessage
5. Petit message vidéo
6. >7. Message de lien (message de réponse passive)
Les messages ordinaires avec réponse passive incluent :
2. . Répondre au message photo
3. Répondre au message vocal
4. Répondre au message vidéo
5. Répondre au message musical
6. Répondre au message graphique
Comment recevoir des messages
xml des 7 messages à recevoir ne sont pas répertoriés ici S'il vous plaît. consultez la documentation officielle pour les définitions de format spécifiques et les attributs descriptions. Le format est très simple. Les attributs communs de base incluent ToUserName, FromUserName, CreateTime, MsgType et MsgId, et chaque type a ses propres attributs spéciaux.
demande de publication puis d'analyse du XML. Le point d'entrée pour les demandes de publication est toujours l'adresse utilisée par le compte officiel WeChat mentionné précédemment. Toutes les demandes pour l'ensemble du compte officiel passeront par cette entrée, mais lors de l'accès, il s'agit d'une demande get, et dans autre cas, il s'agit d'une demande de publication. Dom4j est utilisé pour traiter le XML. Le code de traitement XML est le suivant. Appelez simplement la méthode parseXml dans la méthode post du servlet :
public static Map parseXml(HttpServletRequest request) throws Exception { // 将解析结果存储在HashMap中 Map map = new HashMap(); // 从request中取得输入流 InputStream inputStream = request.getInputStream(); /* * 读取request的body内容 此方法会导致流读取问题 Premature end of file. Nested exception: * Premature end of file String requestBody = * inputStream2String(inputStream); System.out.println(requestBody); */ // 读取输入流 SAXReader reader = new SAXReader(); Document document = reader.read(inputStream); // 得到xml根元素 Element root = document.getRootElement(); // 得到根元素的所有子节点 List<Element> elementList = root.elements(); // 遍历所有子节点 for (Element e : elementList) map.put(e.getName(), e.getText()); // 释放资源 inputStream.close(); inputStream = null; return map; } private static String inputStream2String(InputStream is) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); int i = -1; while ((i = is.read()) != -1) { baos.write(i); } return baos.toString(); }
Ci-dessous, je vais démontrer la construction d'un message de réponse basé sur une telle logique. Après avoir reçu le message texte "texte", répondez à. le message texte ; après avoir reçu la « image », répondez au message photo ; lorsque la « voix » est reçue, répondez au message vocal ; lorsque la « vidéo » est reçue, répondez au message vidéo lorsque la « musique » est reçue ; message musical ; lorsque « image et texte » sont reçus, répondez au message photo et texte.
Prenons comme illustration le message texte de réponse :
Les deux premiers attributs peuvent être obtenus à partir du message reçu, le message reçu format Comme suit :
<xml> <ToUserName><![CDATA[发消息的人,即订阅者]]></ToUserName> <FromUserName><![CDATA[微信公众号本身]]></FromUserName> <CreateTime>消息创建时间(整形)</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[消息内容]]></Content> </xml>
Le ToUserName dans le format du message de réception est le FromUserName du message de réponse, et le FromUserName dans le format du message de réception est le ToUserName du message de réponse.
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[this is a text]]></Content> <MsgId>1234567890123456</MsgId> </xml>
CreateTime est le
horodatage
La réponse à chaque type de message est de construire ce type de contenu au format XML. Les formats sont similaires, sauf que les formats de musique, vidéo, voix et graphiques sont légèrement différents du contenu XML. construit par SMS Un peu plus compliqué. Veuillez vous référer à la documentation officielle pour plus de détails. Je n’entrerai pas dans les détails ici, je pense que vous le comprendrez d’un coup d’œil.
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!