Maison  >  Article  >  Applet WeChat  >  Introduction détaillée à l'utilisation de Java pour développer des comptes publics WeChat afin de recevoir et de répondre passivement aux messages ordinaires

Introduction détaillée à l'utilisation de Java pour développer des comptes publics WeChat afin de recevoir et de répondre passivement aux messages ordinaires

高洛峰
高洛峰original
2017-03-15 17:56:342290parcourir

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 :

1. Message texte de réponse

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

En fait, les deux actions de

recevoir des messages et de répondre passivement aux messages sont indissociables. Il s'agit à l'origine d'une scène interactive. De manière générale, le compte officiel analysera les messages reçus et donnera les réponses correspondantes. Bien entendu, certaines activités particulières ne peuvent être exclues.

Comment recevoir des messages

Les formats

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.

Après avoir vu cela, c'est en fait très clair. Le processus de réception du message est en fait le processus d'obtention du XML de la

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 :


Comment répondre passivement à un message
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

du message envoyé. MsgType est le type de message et le texte est du texte. Le contenu est le contenu du message.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn