Dieser ArtikelC#Das Prinzip und die Implementierungsmethode zum Empfangen/Zurückgeben von Textnachrichten in der WeChat-Entwicklung haben einen gewissen Referenzwert. Schauen wir uns das mit dem Editor an
Empfangen / Textnachrichten zurücksenden
①Erläuterung des Prinzips des Empfangens/Zurücksendens von Textnachrichten
Wenn normale WeChat-Benutzer Nachrichten an öffentliche Konten senden , WeChat Der Server sendet das XML-Datenpaket der POST-Nachricht an die vom Entwickler eingegebene URL. Lesen Sie vor Beginn der Entwicklung die WeChat-Entwicklungsdokumentation für die öffentliche WeChat-Plattform, die normale Nachrichten empfängt, und verschaffen Sie sich ein gewisses Verständnis davon WeChats Nachrichtenverarbeitungsmechanismus. Starten Sie die Entwicklung (WeChat-Entwicklungsdokument zum Empfangen gewöhnlicher Nachrichten). Informationen zu Wiederholungsversuchen Für die Duplizierung von Nachrichten wird empfohlen, msgid zum Deduplizieren von Nachrichten zu verwenden.
2. Wenn der WeChat-Server innerhalb von fünf Sekunden keine Antwort erhält, wird die Verbindung getrennt und die Anfrage erneut gestartet, wobei es insgesamt dreimal erneut versucht wird. Wenn der Server die Verarbeitung und Antwort nicht innerhalb von fünf Sekunden garantieren kann, können Sie direkt mit einer leeren Zeichenfolge antworten. Der WeChat-Server wird damit nichts anfangen und keinen erneuten Versuch einleiten. Einzelheiten finden Sie unter „
Nachricht senden -Passive Antwortnachricht
“. 3. Um einen höheren Sicherheitsschutz zu gewährleisten, können Entwickler im Entwicklercenter auf der offiziellen Website der Nachrichtenverschlüsselung einrichten öffentliche Plattform. Nachdem die Verschlüsselung aktiviert wurde, werden von Benutzern gesendete Nachrichten verschlüsselt, und die passiven Antworten öffentlicher Konten auf Benutzernachrichten müssen ebenfalls verschlüsselt werden (Entwickler senden Nachrichten an Benutzer jedoch über die Kundendienst-Schnittstelle und andere API-Aufrufe) sind nicht betroffen. Ausführliche Anweisungen zur Nachrichtenverschlüsselung und -entschlüsselung finden Sie unter „
Anweisungen zur Nachrichtenverschlüsselung und -entschlüsselung“. Das XML-Format für POST an den Entwicklerserver ist:
Nachricht empfangenDatenpaket-Parameterbeschreibung:
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[this is a test]]></Content> <MsgId>1234567890123456</MsgId> </xml>
Gibt das XML-Format der Textnachricht zurück:
Beschreibung der Parameter für das Paket der zurückgegebenen SMS:
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>12345678</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[你好]]></Content> </xml>
②Implementierung des SMS-Codes zum Empfangen/Zurückgeben
Der Entwickler empfängt das XML-Datenpaket POST vom WeChat-Server auf seinem eigenen Server. Der Empfangscode lautet wie folgt:
Hinweis: Beim Empfang einer Nachricht muss das Nachrichtenformat in das „GBK“-Format konvertiert werden, da es sonst beim späteren Parsen der Nachricht nicht effektiv analysiert wird .
Der Code der ReturnMessage()-Verarbeitungsmethode lautet wie folgt:
if(IsPostBack) { //*********************************自动应答代码块********************************* string postString = string.Empty; using (Stream stream = HttpContext.Current.Request.InputStream) { Byte[] postBytes = new Byte[stream.Length]; stream.Read(postBytes, 0, (Int32)stream.Length); //接收的消息为GBK格式 postString = Encoding.GetEncoding("GBK").GetString(postBytes); string responseContent = help.ReturnMessage(postString ); //返回的消息为UTF-8格式 HttpContext.Current.Response.ContentEncoding = Encoding.UTF8; HttpContext.Current.Response.Write(responseContent); } //********************************自动应答代码块end******************************* }
Der Code der TextHandle(xmldoc)-Verarbeitungsmethode lautet wie folgt:
/// <summary> /// 统一全局返回消息处理方法 /// </summary> /// <param name="postStr"></param> /// <returns></returns> public string ReturnMessage(string postStr) { string responseContent = ""; XmlDocument xmldoc = new XmlDocument(); xmldoc.Load(new System.IO.MemoryStream(System.Text.Encoding.GetEncoding("GB2312").GetBytes(postStr))); XmlNode MsgType = xmldoc.SelectSingleNode("/xml/MsgType"); if (MsgType != null) { switch (MsgType.InnerText) { case "event": responseContent = EventHandle(xmldoc);//菜单事件处理 break; case "text": responseContent = TextHandle(xmldoc);//文本消息处理 break; default: break; } } return responseContent; }
Die Codedemonstration für Die Implementierung der Funktion wurde hier abgeschlossen. Andere nachfolgende Nachrichtenverarbeitungsmodi interagieren ebenfalls auf Basis dieser Methode, wie zum Beispiel: Empfangen/Antworten von Textnachrichten, Bildnachrichten, Sprachnachrichten, Videonachrichten , kleine Videonachrichten, Geolokalisierungsnachrichten, Linknachrichten usw. können unter Bezugnahme auf den obigen Code implementiert werden.
Das obige ist der detaillierte Inhalt vonC# WeChat-Entwicklungsprinzip und Implementierungsmethode zum Empfangen/Zurücksenden von Textnachrichten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!