Heim Java javaLernprogramm Detaillierte Erläuterung der Schritte 2 des Java+WeChat-Entwicklungsprozesses für öffentliche Konten

Detaillierte Erläuterung der Schritte 2 des Java+WeChat-Entwicklungsprozesses für öffentliche Konten

Aug 10, 2018 pm 02:50 PM

Der vorherige Artikel fasste den ersten Teil der Entwicklung der öffentlichen WeChat-Plattform in der Java-Sprache zusammen – Umgebungsaufbau und Entwicklungszugriff. Dieser Artikel fasst den Empfang und die Antwort von Nachrichten zusammen.

Beim Herstellen einer Verbindung mit der öffentlichen WeChat-Plattform sendet WeChat eine Get-Anfrage an unsere Verifizierungsmethode. Wenn wir dann die Nachricht erhalten, sendet WeChat uns eine Post-Anfrage und sendet und empfängt Daten im XML-Format.

Sehen Sie sich die XML-Paketstruktur der gewöhnlichen Textnachricht an, die uns von WeChat gesendet wird:

> >

1234567890123456

Offizielle Dokumentbeschreibung: >

Nachdem Sie es verstanden haben, beginnen Sie mit der Eingabe des Codes:

1.

Konvertieren Sie das empfangene XML-Format in ein Sammlungsobjekt (Map)

Erstellen Sie unter dem Util-Paket eine neue MessageUtil-Toolklasse: Detaillierte Erläuterung der Schritte 2 des Java+WeChat-Entwicklungsprozesses für öffentliche Konten

Um das empfangene XML-Format in das Kartenformat zu konvertieren, ist ein JAR-Paket namens dom4j erforderlich. Und platzieren Sie es im lib-Paket unter Web-INF. Ich werde alle erforderlichen JAR-Pakete am Ende des Artikels einfügen. Mit Hilfe des dom4j-JAR-Pakets können wir eine Methode zum Konvertieren des XML-Formats in ein Map-Objektformat schreiben. Die Methode wird wie folgt implementiert:

/**
	 * 新建方法,将接收到的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;
	}
Nach dem Login kopieren
Ähnlich wie die obige Methode. Wir müssen eine Methode schreiben, um unser Nachrichtenobjekt in XML zu konvertieren.

Hier müssen wir noch ein JAR-Paket verwenden: xstream.jar, die Importmethode ist die gleiche wie bei dom4j. (Ein weiterer zu beachtender Punkt: Der xstream, den ich zuvor importiert habe, war Version 1.4 und der Antwortnachricht fehlte immer der Inhalt. Daher habe ich nach verschiedenen Versuchen die JAR-Paketversion auf 1.3 geändert und die Antwortnachricht war erfolgreich. Ich möchte das erklären Der genaue Grund ist vorübergehend unbekannt. Erzählen Sie denen, die später lernen, diese Falle, um Zeitverschwendung zu vermeiden.

Detaillierte Erläuterung der Schritte 2 des Java+WeChat-Entwicklungsprozesses für öffentliche KontenNatürlich müssen wir zunächst eine neue Entitätsklasse TextMessage erstellen, um das Nachrichtenobjekt zu übertragen Attribute in der Entitätsklasse entsprechen den oben an uns gesendeten WeChat-Nachrichten mit 6 Parametern des XML-Textes und stellen entsprechende Get/Set-Methoden und die Konstruktion leerer Parameter/vollständiger Parameter bereit, die hier nicht beschrieben werden:

private String ToUserName;//开发者微信号
private String FromUserName;//发送方账号
private Long CreateTime;//消息创建时间
private String MsgType;//消息类型
private String Content;//文本消息内容
private String MsgId;//消息id,64位整型
Nach dem Login kopieren

Als nächstes schreiben wir eine Methode zum Konvertieren dieses Textnachrichtenklassenobjekts, konvertieren es in das XML-Format und geben Folgendes zurück:

/**
* 将文本消息对象转化成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);
}
Nach dem Login kopieren

3. Nachdem wir die beiden oben genannten Verarbeitungsmethoden geschrieben haben, implementieren wir [Empfangen und Antworten auf Nachrichten],

Gehen Sie zurück zu unserem ursprünglichen Servlet und schreiben Sie in der doPost-Methode:

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();
		}
	}
Nach dem Login kopieren

Auf diese Weise haben wir den Empfang und die Antwort von Textnachrichten erfolgreich abgeschlossen.

Für das Projekt erforderliches Jar-Paket: Link: https://pan.baidu.com/s/1n7WXoDXN97AwQPjgiyz5gw Passwort: m5ne

Verwandte Empfehlungen:

Java-Grafikcode-Beispiel für die Entwicklung einer öffentlichen WeChat-Plattform

Detaillierte Erläuterung der Schritte 2 des Java+WeChat-Entwicklungsprozesses für öffentliche Konten

Detaillierte Erläuterung des Beispiels für die Entwicklung öffentlicher WeChat-Kontozahlungen (Java)

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Schritte 2 des Java+WeChat-Entwicklungsprozesses für öffentliche Konten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Verursacht die Sicherheitssoftware des Unternehmens, die die Anwendung nicht ausführt? Wie kann man es beheben und es lösen? Verursacht die Sicherheitssoftware des Unternehmens, die die Anwendung nicht ausführt? Wie kann man es beheben und es lösen? Apr 19, 2025 pm 04:51 PM

Fehlerbehebung und Lösungen für die Sicherheitssoftware des Unternehmens, die dazu führt, dass einige Anwendungen nicht ordnungsgemäß funktionieren. Viele Unternehmen werden Sicherheitssoftware bereitstellen, um die interne Netzwerksicherheit zu gewährleisten. ...

Wie vereinfachte ich Probleme mit der Feldzuordnung im Systemdocking mithilfe des Mapstruct? Wie vereinfachte ich Probleme mit der Feldzuordnung im Systemdocking mithilfe des Mapstruct? Apr 19, 2025 pm 06:21 PM

Die Verarbeitung von Feldzuordnungen im Systemdocken stößt häufig auf ein schwieriges Problem bei der Durchführung von Systemdocken: So kartieren Sie die Schnittstellenfelder des Systems und ...

Wie kann ich elegante Entitätsklassenvariablennamen erhalten, um Datenbankabfragebedingungen zu erstellen? Wie kann ich elegante Entitätsklassenvariablennamen erhalten, um Datenbankabfragebedingungen zu erstellen? Apr 19, 2025 pm 11:42 PM

Bei Verwendung von MyBatis-Plus oder anderen ORM-Frameworks für Datenbankvorgänge müssen häufig Abfragebedingungen basierend auf dem Attributnamen der Entitätsklasse erstellt werden. Wenn Sie jedes Mal manuell ...

Wie identifiziert Intellij IDEA die Portnummer eines Spring -Boot -Projekts, ohne ein Protokoll auszugeben? Wie identifiziert Intellij IDEA die Portnummer eines Spring -Boot -Projekts, ohne ein Protokoll auszugeben? Apr 19, 2025 pm 11:45 PM

Beginnen Sie den Frühling mit der Intellijideaultimate -Version ...

Wie konvertiere ich Namen in Zahlen, um die Sortierung zu implementieren und die Konsistenz in Gruppen aufrechtzuerhalten? Wie konvertiere ich Namen in Zahlen, um die Sortierung zu implementieren und die Konsistenz in Gruppen aufrechtzuerhalten? Apr 19, 2025 pm 11:30 PM

Lösungen zum Umwandeln von Namen in Zahlen zur Implementierung der Sortierung in vielen Anwendungsszenarien müssen Benutzer möglicherweise in Gruppen sortieren, insbesondere in einem ...

Wie kann ich Java -Objekte sicher in Arrays umwandeln? Wie kann ich Java -Objekte sicher in Arrays umwandeln? Apr 19, 2025 pm 11:33 PM

Konvertierung von Java-Objekten und -Arrays: Eingehende Diskussion der Risiken und korrekten Methoden zur Konvertierung des Guss-Typs Viele Java-Anfänger werden auf die Umwandlung eines Objekts in ein Array stoßen ...

Wie kann ich elegant den variablen Entitätsklassennamen erstellen, wenn Tkmybatis für Datenbankabfrage verwendet werden? Wie kann ich elegant den variablen Entitätsklassennamen erstellen, wenn Tkmybatis für Datenbankabfrage verwendet werden? Apr 19, 2025 pm 09:51 PM

Wenn Sie TKMybatis für Datenbankabfragen verwenden, ist das Aufbau von Abfragebedingungen ein häufiges Problem. Dieser Artikel wird ...

Warum verursacht das Frühlingsprojekt beim Starten aufgrund von kreisförmigen Abhängigkeiten Zufälligkeitsprobleme? Warum verursacht das Frühlingsprojekt beim Starten aufgrund von kreisförmigen Abhängigkeiten Zufälligkeitsprobleme? Apr 19, 2025 pm 11:21 PM

Verstehen Sie die Zufälligkeit von kreisförmigen Abhängigkeiten beim Start des Frühlingsprojekts. Bei der Entwicklung des Frühlingsprojekts können Sie Zufälligkeit begegnen, die durch kreisförmige Abhängigkeiten beim Projektstart verursacht werden ...

See all articles