Ostatnio brat Shuang chciał spróbować trybu deweloperskiego publicznego konta WeChat i złożył wniosek o założenie konta na publicznej platformie WeChat. Potem poszedłem zobaczyć przewodnik interfejsu otwartej platformy, dodał link do grupy, WeChat ostatnio się przegrzał, ja też kliknąłem z ciekawością.
Kliknij na przewodnik interfejsu komunikatów, zobaczymy, że interfejs komunikatów platformy publicznej wykorzystuje XML do interakcji z danymi. Dla wygody manipulacji danymi zwykle serializujemy i deserializujemy XML. Serializacja to proces przekształcania stanu obiektu w format, który można utrzymać lub przenieść. Przeciwieństwem serializacji jest deserializacja, która przekształca strumienie w obiekty. Te dwa procesy łączą się, aby ułatwić przechowywanie i przesyłanie danych.
Porozmawiajmy najpierw o serializacji, weźmy na przykład format XML odpowiadający na wiadomości graficzne, ponieważ ten format zasadniczo obejmuje wszystkie powyższe komunikaty: push i message reply.
Gdy <xml><Articles>otrzymujemy odpowiedź na dane z platformy publicznej POST, aby zwrócić wyjście, używamy serializacji XML, czyli do konwersji obiektu danych odpowiedzi na format XML udostępniany przez platformę publiczną, co jest wygodne do transmisji danych. Serializacja Tutaj napisałem prosty przykładowy kod w C#. Aby uzyskać serializowany ciąg znaków, Nie ma bezpośredniego wyjścia, oczywiście w projekcie możesz bezpośrednio użyć Response.Output.
Wspomniano tutaj, że nazwa elementu korzeniowego XML generowanego przez metodę Serialize klasy XmlSerializer domyślnie przyjmuje nazwę klasy serializacji. Dlaczego czuję się tak zagmatany, gdy czytam to zdanie? I nie chcę używać bezsensownego słowa jak xml jako nazwy klasy, musimy dodać tag właściwości do klasy serializacji [XmlRoot(ElementName = "xml")], aby określić, że wygenerowany element XML nazywa się xml. Jeśli nie dodasz tego tagu, jeśli nazwa klasy serializacyjnej nie odpowiada nazwie elementu korzeniowego XML, zawsze pojawi się błąd formatu dokumentu.
Po uzyskaniu elementu korzeniowego musimy rozwiązać problem węzła kolekcji Articles, w tym momencie musimy stworzyć nową listę typów silnych, a zmienna nazywa się Articles public property.
XmlArrayItemAttribute to typ pochodny, który określa, że XmlSerializer może być umieszczony w serializowanej tablicy. Po stworzeniu klasy, debugowaniu i jej obejrzeniu praktycznie nie ma większego problemu.
Porozmawiajmy o deserializacji. Gdy zwykły użytkownik WeChat wysyła wiadomość na konto publiczne, serwer WeChat OPUBLIKUJE wiadomość na wypełnionym adresie URL. Obecnie musimy zdeserializować odebrane dane do obiektów potrzebnych dla łatwej obsługi i przechowywania. Zazwyczaj używamy Request.Form["param"], aby uzyskać dane Posta, a wielu deweloperów zauważa, że dane POST nie mają żadnych parametrów podczas przeglądania dokumentacji interfejsu, są zdezorientowani i nie wiedzą, jak je uzyskać. Tutaj używamy Request.InputStream, aby uzyskać treść przychodzącej jednostki HTTP. Więcej informacji można znaleźć w tym artykule: http://blog.sina.com.cn/s/blog_9fa44b550101ee3r.html
Deserializacja Tutaj napisałem prosty przykładowy kod w C#.
Tutaj, ponieważ jest to ciąg bezpośrednio kopiujący przykładowe dane xml odpowiadające na wiadomość graficzną, przeciążenie Deserialize (TextReader textReader) jest oczywiście wykorzystywane przez przeciążenie Deserialize (Stream stream) w projekcie.
W przypadku pytań dotyczących serializacji XML zobacz ten artykuł na MSDN o serializacji XML i SOAP
Umieściłem odpowiedni plik kodu instancji na githubie pod nazwą XmlSerializerExample
Pisz w pośpiechu i po prostu zostaw znak. Nie jadłem wystarczająco dużo w nocy i teraz robi mi się niedobrze. Muszę szybko iść spać. Jeśli są jakieś błędy, proszę je poprawić.
Oryginalny link:
http://imr3.com/tech/weixin-message-api-serialize
|