For nylig ønskede Broder Shuang at prøve udviklertilstanden på WeChats offentlige konto, og han ansøgte om en konto på WeChats offentlige platform. Så gik jeg ind for at se interfaceguiden for den åbne platform, han lagde et link i gruppen, WeChat er blevet overophedet for nylig, og jeg klikkede også nysgerrigt ind.
Klik på beskedgrænsefladeguiden, vi kan se, at beskedgrænsefladen på den offentlige platform bruger XML til datainteraktion. For bekvemmeligheden ved datamanipulation serialiserer og deserialiserer vi normalt XML. Serialisering er processen med at konvertere et objekts tilstand til et format, der kan vedligeholdes eller overføres. Det modsatte af serialisering er deserialisering, som omdanner strømme til objekter. Disse to processer kombineres for at gøre det nemt at lagre og overføre data.
Lad os først tale om serialisering, lad os tage XML-formatet til at svare på grafiske beskeder som eksempel, fordi dette format grundlæggende inkluderer alle ovenstående beskedpush- og beskedsvar.
Når <xml><Articles>vi modtager datasvaret fra den offentlige platform POST for at returnere outputtet, bruger vi XML-serialisering, det vil sige til at konvertere responsdataobjektet til det XML-dataformat, som den offentlige platform leverer, hvilket er praktisk til datatransmission. Serialisering Her skrev jeg en simpel eksempelkode i C#. For at opnå den serialiserede streng, Der er ikke noget direkte output, selvfølgelig kan du i dit projekt direkte Response.Output.
Det nævnes her, at navnet på XML-rodelementet, der genereres af Serialize-metoden i XmlSerializer-klassen, som standard er navnet på serialiseringsklassen. Hvorfor føler jeg mig så tungevridende, når jeg læser denne sætning? Og jeg vil ikke bruge et meningsløst ord som xml som klassenavn; vi skal tilføje et egenskabstag til serialiseringsklassen [XmlRoot(ElementName = "xml")] for at specificere, at det genererede XML-element hedder xml. Hvis du ikke tilføjer dette tag, og dit serialiseringsklassenavn ikke svarer til rodelementnavnet i XML, vil du altid få en fejl i dokumentformatet.
Efter at have fået rodelementet, skal vi løse problemet med samlingsnoden af artikler; på dette tidspunkt skal vi oprette en ny liste over stærke typer, og variablen kaldes artikler offentlig ejendom.
XmlArrayItemAttribute er en afledt type, der angiver, at XmlSerializer kan placeres i et serialiseret array. Efter at have oprettet klassen, fejlsøgt og set på den, er der stort set ikke noget stort problem.
Lad os tale om deserialisering. Når en almindelig WeChat-bruger sender en besked til den offentlige konto, vil WeChat-serveren POSTE beskeden til den udfyldte URL. På nuværende tidspunkt skal vi deserialisere de modtagne data til de objekter, vi har brug for for nem drift og lagring. Normalt bruger vi Request.Form["param"] til at hente dataene fra Posten, og mange udviklere opdager, at dataene i POST ikke har nogen parametre, når de ser på interfacedokumentationen, og de er forvirrede og ved ikke, hvordan de får fat i dataene. Her bruger vi Request.InputStream til at hente indholdet af den indkommende HTTP-enhedskrop. For mere information, se venligst denne artikel: http://blog.sina.com.cn/s/blog_9fa44b550101ee3r.html
Deserialisering Her skrev jeg et simpelt eksempelkode i C#.
Her, fordi det er en streng, der direkte kopierer xml-eksempeldataene, som svarer på den grafiske besked, bruges overbelastningen af Deserialize (TextReader textReader), selvfølgelig kan du direkte bruge overbelastningen af Deserialize (Stream stream) i projektet.
For spørgsmål om XML-serialisering, se denne artikel på MSDN om XML- og SOAP-serialisering
Jeg har lagt den relevante instanskodefil på github på XmlSerializerExample
Skriv hurtigt og lav bare et mærke. Jeg spiste ikke nok om natten, og nu føler jeg mig kvalm. Jeg skal hurtigt i seng. Hvis der er nogen fejl, så ret dem venligst.
Originalt link:
http://imr3.com/tech/weixin-message-api-serialize
|