Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 23922|Vastaus: 0

[Lähde] .net/c# WeChatin julkisen alustan viestirajapinnan ohjeet Serialisointi ja deserialisointi

[Kopioi linkki]
Julkaistu 23.8.2016 17.07.02 | | |
Äskettäin veli Shuang halusi kokeilla WeChat-julkisen tilin kehittäjätilaa ja haki tiliä WeChatin julkiselle alustalle. Sitten menin katsomaan avoimen alustan käyttöliittymäopasta, hän laittoi linkin ryhmään, WeChat on viime aikoina ylikuumentunut ja klikkasin myös uteliaana.

Klikkaa viestikäyttöliittymän opasta, niin näemme, että julkisen alustan viestirajapinta käyttää XML:ää datan vuorovaikutukseen. Tietojen käsittelyn helppouden vuoksi yleensä sarjoitamme ja deserialisoimme XML:n. Sarjoittaminen on prosessi, jossa objektin tila muunnetaan muotoon, jota voidaan ylläpitää tai siirtää. Sarjoituksen vastakohta on deserialisointi, joka muuntaa virrat objekteiksi. Nämä kaksi prosessia yhdessä tekevät datan tallentamisesta ja siirrosta helppoa.

Puhutaan ensin sarjallistamisesta, otetaan esimerkiksi XML-muoto, jossa vastataan graafisiin viesteihin, koska tämä muoto sisältää käytännössä kaikki yllä mainitut viestin push- ja viestivastaukset.


Kun <xml><Articles>saamme datavastauksen julkiselta alustalta POST, joka palauttaa tuloksen, käytämme XML-sarjoittamista, eli muuntamaan vastausdatan objektin julkisen alustan tarjoamaan XML-datamuotoon, joka on kätevä tiedonsiirtoon. Sarjoittaminen Tässä kirjoitin yksinkertaisen esimerkkikoodin C#:lla. Sarjallisen merkkijonon saamiseksi Suoraa tulostusta ei ole, tietenkin projektissasi voit käyttää suoraan Response.Outputia.


Tässä mainitaan, että XML-juurielementin nimi, joka on tuotettu XmlSerializer-luokan Serialize-menetelmällä, on oletuksena sarjallistamisluokan nimi. Miksi tunnen itseni niin kielenkäännökseltä, kun luen tätä lausetta? Enkä halua käyttää merkityksetöntä sanaa kuten xml luokan nimenä, meidän täytyy lisätä ominaisuustagi sarjallistamisluokkaan [XmlRoot(ElementName = "xml")] määritelläksemme, että generoitu XML-elementti on nimeltään xml.
Jos et lisää tätä tagia, jos sarjallistamisluokkasi nimi ei vastaa XML:n juurielementin nimeä, saat aina dokumenttimuotovirheen.

Kun juurialkio on saatu, meidän täytyy ratkaista artikkeleiden kokoelmasolmun ongelma; tässä vaiheessa meidän täytyy luoda uusi lista vahvoista tyypeistä, ja muuttujaa kutsutaan nimellä Artikkelit julkinen omaisuus.


XmlArrayItemAttribute on johdettu tyyppi, joka määrittelee, että XmlSerializer voidaan sijoittaa sarjalliseen taulukkoon. Kun luo luokan, debuggaa ja tarkastellaan sitä, ei oikeastaan ole mitään suurta ongelmaa.

Puhutaanpa deserialisoinnista. Kun tavallinen WeChat-käyttäjä lähettää viestin julkiselle tilille, WeChat-palvelin JULKAISEE viestin täytettyyn URL-osoitteeseen. Tällä hetkellä meidän täytyy deserialisoida vastaanotettu data niihin objekteihin, joita tarvitsemme helppoa käyttöä ja tallennusta varten. Yleensä käytämme Request.Form["param"] -tiedostoa Postin datan saamiseksi, ja monet kehittäjät huomaavat, ettei POSTin datalla ole parametreja rajapinnan dokumentaatiota tarkastellessaan, ja he ovat hämmentyneitä eivätkä tiedä, miten tiedot saadaan. Tässä käytämme Request.InputStreamia saadaksemme saapuvan HTTP-entiteettirungon sisällön. Lisätietoja saat tästä artikkelista: http://blog.sina.com.cn/s/blog_9fa44b550101ee3r.html

Deserialointi Tässä kirjoitin yksinkertaisen esimerkkikoodin C#:lla.


Koska kyseessä on merkkijono, joka suoraan kopioi xml-näytedatan, joka vastaa grafiikkaviestiin, käytetään Deserialize-ylikuormitusta (TextReader textReader), tietenkin voit käyttää suoraan Deserialize-ylikuormitusta (Stream stream) projektissa.

Kysymyksiin XML-sarjoituksesta löytyy tästä MSDN-artikkelista, joka käsittelee XML- ja SOAP-sarjoittamista

Olen laittanut asiaankuuluvan instanssikooditiedoston githubiin osoitteeseen XmlSerializerExample

Kirjoita nopeasti ja tee vain merkki. En syönyt tarpeeksi illalla ja nyt minulla on pahoinvointia. Minun täytyy mennä nopeasti nukkumaan.
Jos virheitä on, korjaa ne, kiitos.

Alkuperäinen linkki:

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





Edellinen:xml-deserialisointi XML-dokumentissa (1, 2) on virhe.
Seuraava:[lähdekoodi].net/c# WeChatin älykäs chat GIS-sijaintitietojen skannaus kuvatoiminnon saamiseksi
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com