Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 23922|Odgovoriti: 0

[Vir] .net/c# WeChat Public Platform Message Interface Smernice za serijalizacijo in deserializacijo

[Kopiraj povezavo]
Objavljeno na 23. 08. 2016 17:07:02 | | |
Nedavno je brat Shuang želel preizkusiti razvijalski način javnega računa WeChat in se je prijavil za račun na javni platformi WeChat. Nato sem šel pogledat vodič za vmesnik odprte platforme, v skupino je dodal povezavo, WeChat je bil v zadnjem času pregret, tudi sam sem radovedno kliknil noter.

Kliknite na vodič za vmesnik sporočil, kjer vidimo, da vmesnik za sporočila javne platforme uporablja XML za interakcijo s podatki. Za lažje upravljanje podatkov običajno serializiramo in deserializiramo XML. Serializacija je proces pretvorbe stanja objekta v obliko, ki jo je mogoče vzdrževati ali prenašati. Nasprotje serializacije je deserializacija, ki pretvarja tokove v objekte. Ta dva procesa skupaj olajšata shranjevanje in prenos podatkov.

Najprej se pogovorimo o serijalizaciji, vzemimo XML format za odgovarjanje na grafična sporočila kot primer, saj ta format v bistvu vključuje vse zgoraj omenjene potiskanje sporočil in odziv na sporočila.


Ko <xml><Articles>prejmemo podatkovni odgovor iz javne platforme POST, da vrnemo izhod, uporabimo XML serijalizacijo, torej pretvorimo podatkovni objekt odziva v XML podatkovni format, ki ga zagotavlja javna platforma, kar je priročno za prenos podatkov. Serializacija Tukaj sem napisal preprosto primer kode v C#. Da bi pridobil serializirani niz, Ni neposrednega izhoda, seveda lahko v vašem projektu neposredno uporabite Response.Output.


Tukaj je omenjeno, da je ime XML korenskega elementa, ki ga generira metoda Serialize razreda XmlSerializer, privzeto ime razreda serializacije. Zakaj se ob branju tega stavka počutim tako zmedeno? In ne želim uporabljati nepomembne besede, kot je xml, kot ime razreda, moramo dodati oznako lastnosti v razred serializacije [XmlRoot(ElementName = "xml")], da določimo, da je generirani XML element poimenovan xml.
Če te oznake ne dodate, če ime vašega razreda serializacije ne ustreza imenu korenskega elementa XML, boste vedno dobili napako v formatu dokumenta.

Po pridobitvi korenskega elementa moramo rešiti problem zbiralnega vozlišča člankov, v tem trenutku moramo ustvariti nov seznam močnih tipov, spremenljivka pa se imenuje javna lastnina člankov.


XmlArrayItemAttribute je izpeljana vrsta, ki določa, da je mogoče XmlSerializer postaviti v serializirano polje. Po ustvarjanju razreda, odpravljanju napak in pregledu praktično ni večjih težav.

Pogovorimo se o deserializaciji. Ko običajen uporabnik WeChata pošlje sporočilo na javni račun, strežnik WeChat OBJAVI sporočilo na zapolnjen URL. Trenutno moramo prejete podatke deserializirati v objekte, ki jih potrebujemo za enostavno uporabo in shranjevanje. Običajno uporabljamo Request.Form["param"] za pridobivanje podatkov Posta, in mnogi razvijalci ugotovijo, da podatki POST nimajo nobenih parametrov, ko gledajo dokumentacijo vmesnika, zato so zmedeni in ne vedo, kako priti do podatkov. Tukaj uporabljamo Request.InputStream za pridobitev vsebine vhodnega HTTP entitetnega telesa. Za več informacij si oglejte ta članek: http://blog.sina.com.cn/s/blog_9fa44b550101ee3r.html

Deserializacija Tukaj sem napisal preprosto primer kode v C#.


Tukaj, ker gre za niz, ki neposredno kopira xml vzorčne podatke, ki odgovarjajo na grafično sporočilo, se uporablja preobremenitev Deserialize (TextReader textReader), seveda pa lahko neposredno uporabite preobremenitev Deserialize (Stream stream) v projektu.

Za vprašanja o serializaciji XML glejte ta članek na MSDN o serializaciji XML in SOAP

Ustrezno datoteko kode primerka sem objavil na githubu na XmlSerializerExample

Pišite na hitro in preprosto naredite oznako. Zvečer nisem jedel dovolj in zdaj mi je slabo. Moram hitro spat.
Če so kakšne napake, jih prosim popravite.

Izvirna povezava:

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





Prejšnji:xml deserializacija V XML dokumentu (1, 2) je napaka.
Naslednji:[izvorna koda].net/c# WeChat inteligentni klepet GIS pregled lokacije za pridobivanje funkcije slike
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com