Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 23922|Antwort: 0

[Quelle] .net/c# WeChat Public Platform Nachrichtenschnittstelle Richtlinien Serialisierung und Deserialisierung

[Link kopieren]
Veröffentlicht am 23.08.2016 17:07:02 | | |
Kürzlich wollte Bruder Shuang den Entwicklermodus des öffentlichen WeChat-Accounts ausprobieren und beantragte ein Konto auf der öffentlichen WeChat-Plattform. Dann habe ich mir die Oberfläche-Anleitung der offenen Plattform angesehen, er hat einen Link in die Gruppe gelegt, WeChat ist in letzter Zeit überhitzt, ich habe neugierig auch angeklickt.

Klicken Sie auf die Nachrichtenschnittstelle, wir sehen, dass die Nachrichtenoberfläche der öffentlichen Plattform XML für die Dateninteraktion verwendet. Für die Bequemlichkeit der Datenmanipulation serialisieren und deserialisieren wir XML meist. Serialisierung ist der Prozess, den Zustand eines Objekts in ein Format umzuwandeln, das gepflegt oder übertragen werden kann. Das Gegenteil der Serialisierung ist Deserialisierung, bei der Ströme in Objekte umgewandelt werden. Diese beiden Prozesse zusammen machen es einfach, Daten zu speichern und zu übertragen.

Sprechen wir zuerst über Serialisierung, nehmen wir das XML-Format zur Antwort auf grafische Nachrichten als Beispiel, denn dieses Format umfasst im Grunde alle oben genannten Nachrichten-Push- und Nachrichtenantworten.


Wenn <xml><Articles>wir die Datenantwort von der öffentlichen Plattform POST erhalten, um die Ausgabe zurückzugeben, verwenden wir XML-Serialisierung, das heißt, um das Antwortdatenobjekt in das von der öffentliche Plattform bereitgestellte XML-Datenformat zu konvertieren, was für die Datenübertragung praktisch ist. Serialisierung Hier habe ich einen einfachen Beispielcode in C# geschrieben. Um den serialisierten String zu erhalten, Es gibt keinen direkten Output, natürlich kannst du in deinem Projekt direkt Response.Output verwenden.


Hier wird erwähnt, dass der Name des XML-Root-Elements, das von der Serialize-Methode der XmlSerializer-Klasse generiert wird, standardmäßig auf den Namen der Serialisierungsklasse zurückfällt. Warum fühle ich mich beim Lesen dieses Satzes so überrascht? Und ich möchte kein bedeutungsloses Wort wie xml als Klassennamen verwenden, wir müssen der Serialisierungsklasse [XmlRoot(ElementName = "xml")] ein Property-Tag hinzufügen, um anzugeben, dass das generierte XML-Element xml heißt.
Wenn Sie dieses Tag nicht hinzufügen und Ihr Serialisierungsklassenname nicht mit dem Root-Element-Namen von XML übereinstimmt, erhalten Sie immer einen Fehler im Dokumentformat.

Nachdem wir das Wurzelelement erhalten haben, müssen wir das Problem des Sammlungsknotens der Artikel lösen; zu diesem Zeitpunkt müssen wir eine neue Liste starker Typen erstellen, und die Variable heißt Articles Public Property.


XmlArrayItemAttribute ist ein abgeleiteter Typ, der angibt, dass der XmlSerializer in einem serialisierten Array platziert werden kann. Nach der Erstellung der Klasse, dem Debuggen und dem Anschauen gibt es im Grunde kein großes Problem.

Sprechen wir über Deserialisierung. Wenn ein gewöhnlicher WeChat-Nutzer eine Nachricht an das öffentliche Konto sendet, wird der WeChat-Server die Nachricht auf die ausgefüllte URL POSTEN. Derzeit müssen wir die empfangenen Daten in die Objekte deserialisieren, die wir für den einfachen Betrieb und die Speicherung benötigen. Normalerweise verwenden wir Request.Form["param"], um die Daten des Posts zu erhalten, und viele Entwickler stellen fest, dass die Daten von POST keine Parameter haben, wenn sie sich die Schnittstellendokumentation ansehen, und sie sind verwirrt und wissen nicht, wie sie die Daten bekommen sollen. Hier verwenden wir Request.InputStream, um den Inhalt des eingehenden HTTP-Entitätskörpers zu erhalten. Weitere Informationen finden Sie in diesem Artikel: http://blog.sina.com.cn/s/blog_9fa44b550101ee3r.html

Deserialisierung Hier habe ich einen einfachen Beispielcode in C# geschrieben.


Hier, da es sich um einen String handelt, der die XML-Beispieldaten direkt kopiert, die auf die grafische Nachricht antworten, wird die Überladung von Deserialize (TextReader textReader) verwendet; natürlich kann man im Projekt direkt die Überladung von Deserialize (Stream stream) verwenden.

Für Fragen zur XML-Serialisierung siehe diesen Artikel auf MSDN über XML- und SOAP-Serialisierung

Ich habe die entsprechende Instanzcode-Datei auf Github unter XmlSerializerExample eingestellt

Schreib schnell und mach einfach eine Markierung. Ich habe nachts nicht genug gegessen und jetzt fühle ich mich übel. Ich muss schnell ins Bett.
Falls es Fehler gibt, korrigiert sie bitte.

Originallink:

http://imr3.com/tech/weixin-message-api-serialize





Vorhergehend:XML-Deserialisierung Es gibt einen Fehler im XML-Dokument (1, 2).
Nächster:[Quellcode].net/c# WeChat intelligenter Chat-GIS-Standortscan zur Bildfunktion
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com