Récemment, le frère Shuang a voulu essayer le mode développeur du compte public WeChat, et il a postulé pour un compte sur la plateforme publique WeChat. Ensuite, je suis allé voir le guide de l’interface de la plateforme ouverte, il a mis un lien dans le groupe, WeChat a été surchauffé récemment, j’ai aussi cliqué curieusement.
Cliquez sur le guide de l’interface de messagerie, nous pouvons voir que l’interface de messagerie de la plateforme publique utilise XML pour l’interaction avec les données. Pour faciliter la manipulation des données, nous sérialisons et désérialisons généralement le XML. La sérialisation est le processus de conversion de l’état d’un objet en un format pouvant être maintenu ou transféré. L’opposé de la sérialisation est la désérialisation, qui convertit les flux en objets. Ces deux processus se combinent pour faciliter le stockage et le transfert des données.
Parlons d’abord de la sérialisation, prenons le format XML de la réponse aux messages graphiques comme exemple, car ce format inclut essentiellement tous les messages push et la réponse aux messages ci-dessus.
Lorsque <xml><Articles>nous recevons la réponse aux données de la plateforme publique POST pour retourner la sortie, nous utilisons la sérialisation XML, c’est-à-dire pour convertir l’objet de données de réponse dans le format de données XML fourni par la plateforme publique, ce qui est pratique pour la transmission de données. Sérialisation Ici, j’ai écrit un code d’exemple simple en C#. Pour obtenir la chaîne sérialisée, Il n’y a pas de sortie directe, bien sûr dans votre projet vous pouvez utiliser directement Response.Output.
Il est mentionné ici que le nom de l’élément racine XML généré par la méthode Serialize de la classe XmlSerializer correspond par défaut au nom de la classe de sérialisation. Pourquoi ai-je l’impression de perdre la langue en lisant cette phrase ? Et je ne veux pas utiliser un mot sans signification comme xml comme nom de classe, il faut ajouter une balise de propriété à la classe de sérialisation [XmlRoot(ElementName = « xml »)] pour spécifier que l’élément XML généré s’appelle xml. Si vous n’ajoutez pas cette balise, si le nom de votre classe de sérialisation ne correspond pas au nom de l’élément racine du XML, vous aurez toujours une erreur de format de document.
Après avoir obtenu l’élément racine, nous devons résoudre le problème du nœud de collection d’Articles ; à ce stade, nous devons créer une nouvelle liste de types forts, et la variable s’appelle propriété publique Articles.
XmlArrayItemAttribute est un type dérivé qui spécifie que le XmlSerialiser peut être placé dans un tableau sérialisé. Après avoir créé la classe, débogé et examiné, il n’y a pratiquement plus de gros problème.
Parlons de la désérialisation. Lorsqu’un utilisateur WeChat ordinaire envoie un message au compte public, le serveur WeChat PUBLIE le message sur l’URL remplie. À ce stade, nous devons désérialiser les données reçues en les objets nécessaires pour faciliter l’exploitation et le stockage. En général, nous utilisons Request.Form["param"] pour obtenir les données du Post, et de nombreux développeurs constatent que les données de POST n’ont aucun paramètre lorsqu’ils consultent la documentation de l’interface, ils sont confus et ne savent pas comment obtenir les données. Ici, nous utilisons Request.InputStream pour obtenir le contenu du corps de l’entité HTTP entrante. Pour plus d’informations, veuillez consulter cet article : http://blog.sina.com.cn/s/blog_9fa44b550101ee3r.html
Déséraylisation Ici, j’ai écrit un exemple simple de code en C#.
Ici, parce qu’il s’agit d’une chaîne qui copie directement les données d’échantillon XML qui répondent au message graphique, la surcharge de Deserialie (TextReader textReader) est utilisée, bien sûr, vous pouvez utiliser directement la surcharge de Deserialie (flux de flux) dans le projet.
Pour des questions sur la sérialisation XML, voir cet article sur MSDN concernant la sérialisation XML et SOAP
J’ai mis le fichier de code d’instance pertinent sur github à XmlSerializerExample
Écrivez rapidement et laissez simplement votre marque. Je n’ai pas assez mangé le soir et maintenant j’ai la nausée. Je dois aller me coucher vite. S’il y a des erreurs, merci de les corriger.
Lien original :
http://imr3.com/tech/weixin-message-api-serialize
|