Недавно Brother Shuang захотел попробовать режим разработчика в публичном аккаунте WeChat и подал заявку на открытый аккаунт на публичной платформе WeChat. Потом я пошёл посмотреть гайд по интерфейсу открытой платформы, он добавил ссылку в группе, WeChat недавно перегревается, я тоже с любопытством зашёл.
Нажмите на руководство по интерфейсу сообщений, мы видим, что интерфейс сообщений публичной платформы использует XML для взаимодействия с данными. Для удобства обработки данных мы обычно сериализируем и десериализируем XML. Сериализация — это процесс преобразования состояния объекта в формат, который можно поддерживать или передавать. Противоположностью сериализации является десериализация, которая преобразует потоки в объекты. Эти два процесса вместе облегчают хранение и передачу данных.
Давайте сначала поговорим о сериализации, возьмём XML-формат ответа на графические сообщения, потому что этот формат включает все вышеуказанные push сообщения и ответы на сообщения.
Когда <xml><Articles>мы получаем ответ данных от публичной платформы POST для возврата результата, мы используем XML-сериализацию, то есть для преобразования объекта данных ответа в XML-формат, предоставляемый публичной платформой, что удобно для передачи данных. Сериализация Здесь я написал простой пример кода на C#. Чтобы получить сериализированную строку, Прямого выхода нет, конечно, в вашем проекте можно напрямую Response.Output.
Здесь упоминается, что имя корневой элемента XML, сгенерированного методом сериализации класса XmlSerializer, по умолчанию относится к названию класса сериализации. Почему я так запутан, когда читаю это предложение? И я не хочу использовать бессмысленное слово вроде xml в качестве имени класса, нам нужно добавить тег свойства в класс сериализации [XmlRoot(ElementName = "xml")], чтобы указать, что сгенерированный XML-элемент называется xml. Если вы не добавите этот тег, если имя класса сериализации не соответствует имени корневого элемента XML, вы всегда получите ошибку формата документа.
После получения корневого элемента нужно решить задачу узла сбора статей, в этот момент нужно создать новый список сильных типов, и переменная называется публичной собственностью статей.
XmlArrayItemAttribute — это производный тип, который указывает, что XmlSerializer можно разместить в сериализированном массиве. После создания класса, отладки и просмотра практически никаких больших проблем.
Давайте поговорим о десериализации. Когда обычный пользователь WeChat отправляет сообщение на публичный аккаунт, сервер WeChat ПУБЛИКУЕТ сообщение на заполнённом URL. В данный момент нам нужно десериализировать полученные данные в объекты, необходимые для удобства работы и хранения. Обычно мы используем Request.Form["param"], чтобы получить данные Post, и многие разработчики обнаруживают, что данные POST не имеют параметров при просмотре документации интерфейса, и они запутались и не знают, как получить эти данные. Здесь мы используем Request.InputStream для получения содержимого тела входящей HTTP-сущности. Для получения дополнительной информации, пожалуйста, ознакомьтесь с этой статьёй: http://blog.sina.com.cn/s/blog_9fa44b550101ee3r.html
Десериализация Здесь я написал простой пример кода на C#.
Здесь, поскольку это строка, которая напрямую копирует xml-образцы, отвечающие на графическое сообщение, используется перегрузка Deserialize (TextReader textReader), конечно, можно напрямую использовать перегрузку Deserialize (поток потока) в проекте.
Для вопросов о сериализации в XML см. статью на MSDN о сериализации XML и SOAP
Я разместил соответствующий файл кода экземпляра на github в XmlSerializerExample
Пишите быстро и просто оставляйте отметку. Я не ела достаточно вечером, и теперь меня тошнит. Мне нужно быстро ложиться спать. Если есть ошибки, пожалуйста, исправьте их.
Оригинальная ссылка:
http://imr3.com/tech/weixin-message-api-serialize
|