Recentemente, Brother Shuang ha voluto provare la modalità sviluppatore dell'account pubblico WeChat e ha fatto domanda per un account sulla piattaforma pubblica WeChat. Poi sono andato a vedere la guida dell'interfaccia della piattaforma aperta, ha messo un link nel gruppo, WeChat si è sovraccaricato ultimamente, ho cliccato curioso.
Clicca sulla guida all'interfaccia messaggio, possiamo vedere che l'interfaccia messaggiale della piattaforma pubblica usa XML per l'interazione con i dati. Per comodità della manipolazione dei dati, di solito serializziamo e deserializziamo XML. La serializzazione è il processo di conversione dello stato di un oggetto in un formato che può essere mantenuto o trasferito. L'opposto della serializzazione è la deserializzazione, che converte i flussi in oggetti. Questi due processi si combinano per rendere facile la memorizzazione e il trasferimento dei dati.
Parliamo prima della serializzazione, prendiamo come esempio il formato XML per rispondere ai messaggi grafici, perché questo formato include fondamentalmente tutto il push e la risposta ai messaggi sopra citati.
Quando <xml><Articles>riceviamo la risposta dati dalla piattaforma pubblica POST per restituire l'output, usiamo la serializzazione XML, cioè per convertire l'oggetto dati risposta nel formato dati XML fornito dalla piattaforma pubblica, comodo per la trasmissione dei dati. Serializzazione Qui ho scritto un semplice esempio di codice in C#. Per ottenere la stringa serializzata, Non c'è un output diretto, ovviamente nel tuo progetto puoi fare direttamente Response.Output.
Qui viene menzionato che il nome dell'elemento radice XML generato dal metodo Serialize della classe XmlSerializer è predefinito con il nome della classe di serializzazione. Perché mi sento così confuso quando leggo questa frase? E non voglio usare una parola priva di significato come xml come nome di classe, dobbiamo aggiungere un tag proprietà alla classe di serializzazione [XmlRoot(ElementName = "xml")] per specificare che l'elemento XML generato si chiama xml. Se non aggiungi questo tag, se il nome della tua classe di serializzazione non corrisponde al nome dell'elemento radice di XML, riceverai sempre un errore di formato documentale.
Dopo aver ottenuto l'elemento radice, dobbiamo risolvere il problema del nodo di raccolta di Articoli; in questo momento dobbiamo creare una nuova lista di tipi forti, e la variabile si chiama proprietà pubblica Articoli.
XmlArrayItemAttribute è un tipo derivato che specifica che l'XmlSerializer può essere inserito in un array serializzato. Dopo aver creato la classe, aver fatto il debug e l'aver esaminata, praticamente non c'è un grosso problema.
Parliamo di deserializzazione. Quando un utente WeChat ordinario invia un messaggio all'account pubblico, il server WeChat PUBBLICHERÀ il messaggio nell'URL riempito. In questo momento, dobbiamo deserializzare i dati ricevuti negli oggetti necessari per facilitare l'uso e l'archiviazione. Di solito usiamo Request.Form["param"] per ottenere i dati del Post, e molti sviluppatori notano che i dati di POST non hanno parametri quando guardano la documentazione dell'interfaccia, sono confusi e non sanno come ottenere i dati. Qui usiamo Request.InputStream per ottenere il contenuto del corpo dell'entità HTTP in ingresso. Per maggiori informazioni, si prega di consultare questo articolo: http://blog.sina.com.cn/s/blog_9fa44b550101ee3r.html
Serielizzazione qui ho scritto un semplice esempio di codice in C#.
Qui, poiché si tratta di una stringa che copia direttamente i dati di esempio xml che rispondono al messaggio grafico, si usa il sovraccarico di Deserialize (TextReader textReader), ovviamente puoi usare direttamente il sovraccarico di Deserialize (flusso di flusso) nel progetto.
Per domande sulla serializzazione XML, consulta questo articolo su MSDN riguardante la serializzazione XML e SOAP
Ho messo il file di codice dell'istanza pertinente su github all'indirizzo XmlSerializerExample
Scrivi in fretta e lascia semplicemente un segno. Non ho mangiato abbastanza la sera e ora mi sento nauseato. Devo andare a letto in fretta. Se ci sono errori, correggeteli.
Link originale:
http://imr3.com/tech/weixin-message-api-serialize
|