Nesen brālis Shuang vēlējās izmēģināt WeChat publiskā konta izstrādātāja režīmu, un viņš pieteicās kontam WeChat publiskajā platformā. Tad es devos apskatīt atvērtās platformas interfeisa rokasgrāmatu, viņš grupā ievietoja saiti, WeChat nesen ir pārkarsis, es arī ziņkārīgi noklikšķināju.
Noklikšķiniet uz ziņojumu interfeisa rokasgrāmatas, mēs redzam, ka publiskās platformas ziņojumu saskarne datu mijiedarbībai izmanto XML. Datu manipulācijas ērtībai mēs parasti serializējam un deserializējam XML. Serializācija ir objekta stāvokļa pārvēršana formātā, ko var uzturēt vai pārsūtīt. Serializācijas pretstats ir deserializācija, kas plūsmas pārvērš objektos. Šie divi procesi apvienojas, lai atvieglotu datu glabāšanu un pārsūtīšanu.
Vispirms parunāsim par serializāciju, kā piemēru ņemsim XML formātu, lai atbildētu uz grafiskajiem ziņojumiem, jo šis formāts būtībā ietver visu iepriekš minēto ziņojumu un ziņojumu atbildi.
Kad <xml><Articles>mēs saņemam datu atbildi no publiskās platformas POST, lai atgrieztu izvadi, mēs izmantojam XML serializāciju, tas ir, lai pārvērstu atbildes datu objektu publiskās platformas nodrošinātajā XML datu formātā, kas ir ērts datu pārraidei. Serializācija Šeit es uzrakstīju vienkāršu koda piemēru C#. Lai iegūtu serializēto virkni, Nav tiešas izvades, protams, jūsu projektā jūs varat tieši Response.Output.
Šeit ir minēts, ka XML saknes elementa nosaukums, ko ģenerē XmlSerializer klases Serialize metode, pēc noklusējuma ir serializācijas klases nosaukums. Kāpēc es jūtos tik mēles vērpšana, kad es lasu šo teikumu? Un es nevēlos izmantot bezjēdzīgu vārdu, piemēram, xml kā klases nosaukumu, mums ir jāpievieno rekvizītu tags serializācijas klasei [XmlRoot(ElementName = "xml")], lai norādītu, ka ģenerētais XML elements ir nosaukts par xml. Ja nepievienojat šo atzīmi, ja serializācijas klases nosaukums neatbilst XML saknes elementa nosaukumam, vienmēr tiek parādīta dokumenta formāta kļūda.
Pēc saknes elementa iegūšanas mums ir jāatrisina rakstu savākšanas mezgla problēma, šobrīd mums ir jāizveido jauns spēcīgu veidu saraksts, un mainīgo sauc par Raksti publiskais īpašums.
XmlArrayItemAttribute ir atvasināts tips, kas norāda, ka XmlSerializer var ievietot serializētā masīvā. Pēc klases izveides, atkļūdošanas un apskates būtībā nav lielu problēmu.
Parunāsim par deserializāciju. Kad parasts WeChat lietotājs nosūta ziņojumu uz publisko kontu, WeChat serveris POST ziņojumu uz aizpildīto URL. Šajā laikā mums ir jādeserializē saņemtie dati objektos, kas nepieciešami ērtai darbībai un uzglabāšanai. Parasti mēs izmantojam Request.Form["param"], lai iegūtu ziņas datus, un daudzi izstrādātāji atklāj, ka, aplūkojot saskarnes dokumentāciju, POST datiem nav parametru, un viņi ir apjukuši un nezina, kā iegūt datus. Šeit mēs izmantojam Request.InputStream, lai iegūtu ienākošā HTTP entītijas ķermeņa saturu. Lai iegūtu vairāk informācijas, lūdzu, skatiet šo rakstu: http://blog.sina.com.cn/s/blog_9fa44b550101ee3r.html
Deserializācija Šeit es uzrakstīju vienkāršu koda piemēru C#.
Šeit, tā kā tā ir virkne, kas tieši kopē xml parauga datus, kas atbild uz grafisko ziņojumu, tiek izmantota Deserialize (TextReader textReader) pārslodze, protams, projektā varat tieši izmantot Deserialize (Stream stream) pārslodzi.
Jautājumus par XML serializāciju skatiet šajā rakstā par MSDN par XML un SOAP serializāciju
Es esmu ievietojis attiecīgo instances koda failu github vietnē XmlSerializerExample
Rakstiet steigā un vienkārši atzīmējiet atzīmi. Es naktī neēdu pietiekami daudz, un tagad man ir slikta dūša. Man ātri jāiet gulēt. Ja ir kādas kļūdas, lūdzu, izlabojiet tās.
Oriģinālā saite:
http://imr3.com/tech/weixin-message-api-serialize
|