Nylig ønsket bror Shuang å prøve utviklermodusen til WeChat sin offentlige konto, og han søkte om en konto på WeChats offentlige plattform. Så gikk jeg for å se grensesnittguiden til den åpne plattformen, han la inn en lenke i gruppen, WeChat har vært overopphetet i det siste, jeg klikket også nysgjerrig inn.
Klikk på meldingsgrensesnittguiden, vi kan se at meldingsgrensesnittet til den offentlige plattformen bruker XML for datainteraksjon. For bekvemmeligheten ved databehandling serialiserer og deserialiserer vi vanligvis XML. Serialisering er prosessen med å konvertere et objekts tilstand til et format som kan opprettholdes eller overføres. Det motsatte av serialisering er deserialisering, som omdanner strømmer til objekter. Disse to prosessene kombineres for å gjøre det enkelt å lagre og overføre data.
La oss først snakke om serialisering, la oss ta XML-formatet for å svare på grafiske meldinger som et eksempel, fordi dette formatet i bunn og grunn inkluderer alle de ovennevnte meldingspush- og meldingsvarene.
Når <xml><Articles>vi mottar datasvaret fra den offentlige plattformens POST for å returnere utdata, bruker vi XML-serialisering, det vil si for å konvertere responsdataobjektet til XML-dataformatet som tilbys av den offentlige plattformen, noe som er praktisk for dataoverføring. Serialisering Her skrev jeg et enkelt eksempelkode i C#. For å hente den serialiserte strengen, Det finnes ingen direkte output, selvfølgelig kan du i prosjektet ditt direkte Response.Output.
Det nevnes her at navnet på XML-rotelementet generert av Serialize-metoden i XmlSerializer-klassen som standard er navnet på serialiseringsklassen. Hvorfor føler jeg meg så tungevridd når jeg leser denne setningen? Og jeg vil ikke bruke et meningsløst ord som xml som klassenavn, vi må legge til en egenskapstagg til serialiseringsklassen [XmlRoot(ElementName = "xml")] for å spesifisere at det genererte XML-elementet heter xml. Hvis du ikke legger til denne taggen, og navnet på serialiseringsklassen din ikke samsvarer med rotelementnavnet til XML, vil du alltid få en feilkode i dokumentformatet.
Etter å ha fått rotelementet, må vi løse problemet med samlingsnoden av Articles, på dette tidspunktet må vi lage en ny liste over sterke typer, og variabelen kalles Articles public property.
XmlArrayItemAttribute er en avledet type som spesifiserer at XmlSerializer kan plasseres i et serialisert array. Etter å ha laget klassen, feilsøkt og sett på den, er det egentlig ikke noe stort problem.
La oss snakke om deserialisering. Når en vanlig WeChat-bruker sender en melding til den offentlige kontoen, vil WeChat-serveren POSTE meldingen til den utfylte URL-en. På dette tidspunktet må vi deserialisere de mottatte dataene til objektene vi trenger for enkel drift og lagring. Vanligvis bruker vi Request.Form["param"] for å hente dataene til Posten, og mange utviklere oppdager at dataene til POST ikke har noen parametere når de ser på grensesnittdokumentasjonen, og de er forvirret og vet ikke hvordan de skal få tak i dataene. Her bruker vi Request.InputStream for å hente innholdet til den innkommende HTTP-enhetens kropp. For mer informasjon, vennligst se denne artikkelen: http://blog.sina.com.cn/s/blog_9fa44b550101ee3r.html
Deserialisering Her skrev jeg et enkelt eksempelkode i C#.
Her, fordi det er en streng som direkte kopierer xml-eksempeldataene som svarer på den grafiske meldingen, brukes overbelastningen av Deserialize (TextReader textReader), selvfølgelig kan du bruke overbelastningen av Deserialize (Stream stream) direkte i prosjektet.
For spørsmål om XML-serialisering, se denne artikkelen på MSDN om XML- og SOAP-serialisering
Jeg har lagt ut den relevante instanskodefilen på github på XmlSerializerExample
Skriv i all hast og lag bare et merke. Jeg spiste ikke nok om kvelden, og nå føler jeg meg kvalm. Jeg må legge meg raskt. Hvis det er noen feil, vennligst rett dem.
Original lenke:
http://imr3.com/tech/weixin-message-api-serialize
|