Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 23922|Antwoord: 0

[Bron] .net/c# WeChat Public Platform Message Interface Richtlijnen Serialisatie en deserialisatie

[Link kopiëren]
Geplaatst op 23-08-2016 17:07:02 | | |
Onlangs wilde Broeder Shuang de ontwikkelaarsmodus van het WeChat publieke account proberen en hij heeft een account aangevraagd op het WeChat publieke platform. Toen ging ik naar de interfacegids van het open platform, hij zette een link in de groep, WeChat is de laatste tijd oververhit geraakt, ik klikte ook nieuwsgierig in.

Klik op de berichtinterface-gids, we zien dat de berichtinterface van het publieke platform XML gebruikt voor data-interactie. Voor het gemak van datamanipulatie serialiseren en deserialiseren we XML gewoonlijk. Serialisatie is het proces waarbij de toestand van een object wordt omgezet in een formaat dat behouden of overgedragen kan worden. Het tegenovergestelde van serialisatie is deserialisatie, waarbij stromen worden omgezet in objecten. Deze twee processen combineren het gemakkelijk maken om data op te slaan en over te dragen.

Laten we het eerst hebben over serialisatie, laten we het XML-formaat nemen om op grafische berichten te reageren, want dit formaat omvat in feite alle bovenstaande berichten push- en berichtantwoord.


Wanneer <xml><Articles>we het data-antwoord van het publieke platform POST ontvangen om de output terug te geven, gebruiken we XML-serialisatie, dat wil zeggen om het responsdataobject om te zetten naar het XML-dataformaat dat door het publieke platform wordt geleverd, wat handig is voor datatransmissie. Serialisatie Hier heb ik een eenvoudige voorbeeldcode in C# geschreven. Om de geserialiseerde string te verkrijgen, Er is geen directe output, natuurlijk kun je in je project direct Response.Output gebruiken.


Hier wordt vermeld dat de naam van het XML-rootelement dat door de Serialize-methode van de XmlSerializer-klasse wordt gegenereerd, standaard de naam van de serialisatieklasse krijgt. Waarom voel ik me zo tong draaien als ik deze zin lees? En ik wil geen betekenisloos woord als xml als klassenaam gebruiken, we moeten een eigenschapstag toevoegen aan de serialisatieklasse [XmlRoot(ElementName = "xml")] om aan te geven dat het gegenereerde XML-element xml heet.
Als je deze tag niet toevoegt, en je serialisatieklassenaam niet overeenkomt met de root-element naam van XML, krijg je altijd een fout in het documentformaat.

Na het verkrijgen van het wortelelement moeten we het probleem van de verzamelingsknoop van Artikelen oplossen; op dit moment moeten we een nieuwe lijst van sterke types maken, en de variabele heet Artikelen publiek eigendom.


XmlArrayItemAttribute is een afgeleid type dat specificeert dat de XmlSerializer in een geserialiseerde array kan worden geplaatst. Na het aanmaken van de klasse, het debuggen en bekijken ervan, is er eigenlijk geen groot probleem.

Laten we het hebben over deserialisering. Wanneer een gewone WeChat-gebruiker een bericht naar het publieke account stuurt, zal de WeChat-server het bericht op de ingevulde URL PLAATSEN. Op dit moment moeten we de ontvangen data deserialiseren in de objecten die we nodig hebben voor eenvoudige werking en opslag. Meestal gebruiken we Request.Form["param"] om de data van de Post te verkrijgen, en veel ontwikkelaars merken dat de data van POST geen parameters bevat als ze naar de interface-documentatie kijken, en ze zijn in de war en weten niet hoe ze de data moeten krijgen. Hier gebruiken we Request.InputStream om de inhoud van het binnenkomende HTTP-entiteitslichaam te verkrijgen. Voor meer informatie kunt u dit artikel raadplegen: http://blog.sina.com.cn/s/blog_9fa44b550101ee3r.html

Deserialisatie Hier schreef ik een eenvoudige voorbeeldcode in C#.


Hier, omdat het een string is die direct de xml-voorbeelddata kopieert die op het grafische bericht reageert, wordt de overload van Deserialize (TextReader textReader) gebruikt; natuurlijk kun je de overload van Deserialize (Stream stream) direct in het project gebruiken.

Voor vragen over XML-serialisatie, zie dit artikel op MSDN over XML- en SOAP-serialisatie

Ik heb het relevante instance code-bestand op github gezet op XmlSerializerExample

Schrijf snel en maak gewoon een markering. Ik heb 's avonds niet genoeg gegeten en nu voel ik me misselijk. Ik moet snel naar bed.
Als er fouten zijn, corrigeer die dan alsjeblieft.

Originele link:

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





Vorig:XML-deserialisatie Er is een fout in het XML-document (1, 2).
Volgend:[broncode].net/c# WeChat intelligente chat GIS-locatiegegevens scan om de beeldfunctie te krijgen
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com