Recentemente, o irmão Shuang quis tentar o modo desenvolvedor da conta pública do WeChat e se inscreveu para uma conta na plataforma pública WeChat. Depois fui ver o guia de interface da plataforma aberta, ele colocou um link no grupo, o WeChat estava superaquecido recentemente, eu também cliquei curioso.
Clique no guia da interface de mensagens, podemos ver que a interface de mensagens da plataforma pública usa XML para interação de dados. Para facilitar a manipulação de dados, geralmente serializamos e desserializamos XML. Serialização é o processo de converter o estado de um objeto em um formato que pode ser mantido ou transferido. O oposto da serialização é a desserialização, que converte fluxos em objetos. Esses dois processos se combinam para facilitar o armazenamento e a transferência de dados.
Vamos falar primeiro sobre serialização, vamos pegar o formato XML de resposta a mensagens gráficas como exemplo, porque esse formato basicamente inclui todo o push e resposta de mensagens acima.
Quando <xml><Articles>recebemos a resposta de dados da plataforma pública POST para retornar a saída, usamos serialização XML, ou seja, para converter o objeto de dados de resposta no formato de dados XML fornecido pela plataforma pública, que é conveniente para transmissão de dados. Serialização Aqui escrevi um código de exemplo simples em C#. Para obter a string serializada, Não há saída direta, claro que no seu projeto você pode usar diretamente Response.Output.
É mencionado aqui que o nome do elemento raiz XML gerado pelo método Serialize da classe XmlSerializer é o nome padrão da classe de serialização. Por que me sinto tão confusa quando leio essa frase? E não quero usar uma palavra sem sentido como xml como nome de classe, precisamos adicionar uma tag de propriedade à classe de serialização [XmlRoot(ElementName = "xml")] para especificar que o elemento XML gerado se chama xml. Se você não adicionar essa tag, se o nome da sua classe de serialização não corresponder ao nome do elemento raiz do XML, você sempre terá um erro de formato de documento.
Após obter o elemento raiz, precisamos resolver o problema do nó de coleção de Artigos; neste momento, precisamos criar uma nova lista de tipos fortes, e a variável é chamada de propriedade pública Artigos.
XmlArrayItemAttribute é um tipo derivado que especifica que o XmlSerializer pode ser colocado em um array serializado. Depois de criar a classe, depurar e analisá-la, basicamente não há grande problema.
Vamos falar sobre desserialização. Quando um usuário comum do WeChat envia uma mensagem para a conta pública, o servidor do WeChat POSTARÁ a mensagem na URL preenchida. Neste momento, precisamos desserializar os dados recebidos nos objetos necessários para facilitar a operação e armazenamento. Normalmente usamos o Request.Form["param"] para obter os dados do Post, e muitos desenvolvedores percebem que os dados do POST não têm parâmetros ao olhar a documentação da interface, ficam confusos e não sabem como obter os dados. Aqui usamos o Request.InputStream para obter o conteúdo do corpo da entidade HTTP recebida. Para mais informações, consulte este artigo: http://blog.sina.com.cn/s/blog_9fa44b550101ee3r.html
Deserialização Aqui escrevi um exemplo simples de código em C#.
Aqui, por ser uma string que copia diretamente os dados de amostra xml que respondem à mensagem gráfica, a sobrecarga do Deserialize (TextReader textReader) é usada; claro, você pode usar diretamente a sobrecarga do Deserialize (fluxo de fluxo) no projeto.
Para perguntas sobre serialização XML, veja este artigo sobre MSDN sobre serialização XML e SOAP
Coloquei o arquivo de código da instância relevante no github em XmlSerializerExample
Escreva rápido e simplesmente deixe uma marca. Não comi o suficiente à noite e agora estou enjoada. Preciso ir dormir rápido. Se houver algum erro, por favor, corrija-o.
Link original:
http://imr3.com/tech/weixin-message-api-serialize
|