In diesem Artikel werden hauptsächlich relevante Informationen zur Java-Entwicklung öffentlicher WeChat-Konten vorgestellt, um normale Nachrichten zu empfangen und passiv darauf zu antworten.
Nach Abschluss des vorherigen Artikels erfahren Sie, wie Sie auf die Öffentlichkeit von WeChat zugreifen können In diesem Artikel geht es um die grundlegendste Funktion des offiziellen WeChat-Kontos: Empfangen und Beantworten normaler Nachrichten. Apropos gewöhnliche Nachrichten: Was sind gewöhnliche Nachrichten, die von offiziellen WeChat-Konten definiert werden? Die in der WeChat-Entwicklerdokumentation erwähnten gewöhnlichen Nachrichten umfassen die folgenden Kategorien
2.
BildNachricht3. Sprachnachricht
4.
VideoNachricht5. Kleine Videonachricht
7. Link-Nachricht (passive Antwortnachricht)
1 Antwort-SMS
3. Auf Sprachnachricht antworten
4. Auf Videonachricht antworten
5. Auf Musiknachricht antworten
6. Auf Grafiknachricht antworten
Tatsächlich sind die beiden Aktionen des
und des passiven Beantwortens von Nachrichten untrennbar miteinander verbunden. Im Allgemeinen gibt das öffentliche Konto entsprechende Antworten, indem es die empfangenen Nachrichten analysiert. Natürlich können einige Sondergeschäfte nicht ausgeschlossen werden.
Die
-Formate der 7 zu empfangenden Nachrichten sind hier bitte nicht aufgeführt Suchen Sie in der offiziellen Dokumentation nach spezifischen Formatdefinitionen und Attributbeschreibungen . Das Format ist sehr einfach. Zu den grundlegenden allgemeinen Attributen gehören ToUserName, FromUserName, CreateTime, MsgType und MsgId, und jeder Typ hat seine eigenen speziellen Attribute.
Nachdem ich das gesehen habe, ist es tatsächlich sehr klar, dass der Prozess des Empfangens der Nachricht eigentlich der Prozess ist, die XML-Datei der
abzurufen und dann die XML-Datei zu analysieren. Der Eingang für die Post-Anfrage ist immer noch die Adresse, die vom zuvor erwähnten offiziellen WeChat-Konto verwendet wird. Alle Anfragen für das gesamte offizielle Konto werden über diesen Eingang geleitet, aber beim Zugriff handelt es sich um eine Get-Anfrage und in anderen Fälle, in denen es sich um eine Post-Anfrage handelt. Dom4j wird zum Verarbeiten von XML verwendet. Rufen Sie einfach die parseXml-Methode in der Post-Methode von Servlet auf:
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(); }
Im Folgenden werde ich den Aufbau einer Antwortnachricht basierend auf einer solchen Logik demonstrieren. Nachdem Sie die Textnachricht „Text“ erhalten haben, antworten Sie auf die Textnachricht; nach Erhalt des „Bildes“ auf die Bildnachricht antworten, wenn „Video“ empfangen wird, auf die Videonachricht antworten; Musiknachricht; wenn „Bild und Text“ empfangen werden, auf Bild- und Textnachricht antworten.
Nehmen Sie als Beispiel eine Antwort-SMS:
<xml> <ToUserName><![CDATA[发消息的人,即订阅者]]></ToUserName> <FromUserName><![CDATA[微信公众号本身]]></FromUserName> <CreateTime>消息创建时间(整形)</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[消息内容]]></Content> </xml>
<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 ist der
der gesendeten Nachricht. MsgType ist der Nachrichtentyp und der Text ist Text. Inhalt ist der Nachrichteninhalt.
Die Antwort auf jede Art von Nachricht besteht darin, diese Art von Inhalten im XML-Format zu erstellen. Die Formate sind ähnlich, außer dass sich die Musik-, Video-, Sprach- und Grafikformate geringfügig vom XML-Inhalt unterscheiden Durch Textnachrichten aufgebaut. Weitere Informationen finden Sie in der offiziellen Dokumentation. Ich werde hier nicht auf Details eingehen, ich glaube, Sie werden es auf einen Blick verstehen.
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die Verwendung von Java zur Entwicklung öffentlicher WeChat-Konten zum Empfangen und passiven Beantworten normaler Nachrichten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!