Amf3 получение значений объектов - C#

Узнай цену своей работы

Формулировка задачи:

Люди, приветствую вас. пытаюсь получить информацию из потока данных amf3, набросал программку для десериализации данных (для примера беру данные из файла) получаю десериализованный объект - месагу (тело+заголовок) но получить конкретные данные (значения) из этой мессаги не могу. подскажите как извлечь их? на скрине пример структуры данных на паузе отладки.
Листинг программы
  1. using System;
  2. using FluorineFx.IO;
  3. using System.IO;
  4.  
  5. namespace ConsoleApplication9
  6.  
  7. {
  8. internal class Program
  9. {
  10. private static void Main(string[] args)
  11. {
  12. var fsD = new FileStream("resp3.hex", FileMode.Open, FileAccess.Read, FileShare.Read);
  13. // AMFDeserializer deserializer=new AMFDeserializer(fsD);
  14.  
  15. var deserializer = new AMFDeserializer(fsD);
  16. var messageD = deserializer.ReadAMFMessage();
  17.  
  18. string target = "";
  19. string response = "";
  20. object content = null;
  21. var am = new AMFBody(target, response, null);
  22. am = messageD.GetBodyAt(0);
  23. target = am.Target;
  24. response = am.Response;
  25. content = am.Content;
  26.  
  27. //var resp = new MessageBase();
  28. //resp.body = messageD;
  29. //var mes = new ASObject();
  30. //resp.SetHeader("",messageD);
  31. //object value = resp.body;
  32. //if (value is IDictionary)
  33. //{
  34. // IDictionary dictionary = value as IDictionary;
  35. // foreach (DictionaryEntry entry in dictionary)
  36. // {
  37. // this.Add(entry.Key as string, entry.Value);
  38. // }
  39. //}
  40. // var fsS = new FileStream("prog-S12.amf", FileMode.Create, FileAccess.Write, FileShare.Write);
  41. //var serializer = new AMFSerializer(fsS);
  42. //var hed = new AMFHeader("pr", true, pr);
  43. //var mes = new AMFMessage();
  44. //var bod = new AMFBody(target: "pr", response: "pr", content: pr);
  45. //mes.AddHeader(hed);
  46. //mes.AddBody(bod);
  47. //serializer.WriteMessage(mes);
  48. Console.WriteLine("1212");
  49.  
  50. }
  51.  
  52. }
  53.  
  54. }

Решение задачи: «Amf3 получение значений объектов»

textual
Листинг программы
  1. class AcknowledgeMessageExt : AsyncMessageExt, IExternalizable
  2.     {
  3.         private const long serialVersionUID = -8764729006642310394L;
  4.         public const string CLASS_ALIAS = "DSK";
  5.  
  6.         public AcknowledgeMessageExt()
  7.             : this(null)
  8.         {
  9.         }
  10.  
  11.         public AcknowledgeMessageExt(AcknowledgeMessage message)
  12.             : base()
  13.         {
  14.             _message = message;
  15.         }
  16.  
  17.         public virtual string Alias
  18.         {
  19.             get
  20.             {
  21.                 return CLASS_ALIAS;
  22.             }
  23.         }
  24.  
  25.         //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
  26.         //ORIGINAL LINE: public void writeExternal(java.io.ObjectOutput output) throws java.io.IOException
  27.         public void WriteExternal(IDataOutput output)
  28.         {
  29.             /*if (_message != null)
  30.             {
  31.                 _message.writeExternal(output);
  32.             }
  33.             else
  34.             {
  35.                 base.writeExternal(output);
  36.             }*/
  37.         }
  38.  
  39.         public void ReadExternal(IDataInput input)
  40.         {
  41.             base.ReadExternal(input);
  42.  
  43.             short[] flagsArray = readFlags(input);
  44.             for (int i = 0; i < flagsArray.Length; i++)
  45.             {
  46.                 short flags = flagsArray[i];
  47.                 short reservedPosition = 0;
  48.  
  49.                 // For forwards compatibility, read in any other flagged objects
  50.                 // to preserve the integrity of the input stream...
  51.                 if ((flags >> reservedPosition) != 0)
  52.                 {
  53.                     for (short j = reservedPosition; j < 6; j++)
  54.                     {
  55.                         if (((flags >> j) & 1) != 0)
  56.                         {
  57.                             input.ReadObject();
  58.                         }
  59.                     }
  60.                 }
  61.             }
  62.         }
  63.  
  64.         private AcknowledgeMessage _message;
  65.     }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы