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

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

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

Люди, приветствую вас. пытаюсь получить информацию из потока данных amf3, набросал программку для десериализации данных (для примера беру данные из файла) получаю десериализованный объект - месагу (тело+заголовок) но получить конкретные данные (значения) из этой мессаги не могу. подскажите как извлечь их? на скрине пример структуры данных на паузе отладки.
using System;
using FluorineFx.IO;
using System.IO;

namespace ConsoleApplication9

{
    internal class Program
    {
        private static void Main(string[] args)
        {
 
            var fsD = new FileStream("resp3.hex", FileMode.Open, FileAccess.Read, FileShare.Read);
            
           // AMFDeserializer deserializer=new AMFDeserializer(fsD);

            var deserializer = new AMFDeserializer(fsD);
 
            var messageD = deserializer.ReadAMFMessage();

            string target = "";
            string response = "";
            object content = null;
            var am = new AMFBody(target, response, null);
            am = messageD.GetBodyAt(0);
            target = am.Target;
            response = am.Response;
            content = am.Content;

            //var resp = new MessageBase();
            //resp.body =  messageD;
            //var mes = new ASObject();
            //resp.SetHeader("",messageD);
 
            //object value = resp.body;
            //if (value is IDictionary)
            //{
            //    IDictionary dictionary = value as IDictionary;
            //    foreach (DictionaryEntry entry in dictionary)
            //    {
            //        this.Add(entry.Key as string, entry.Value);
            //    }
            //}
 
           // var fsS = new FileStream("prog-S12.amf", FileMode.Create, FileAccess.Write, FileShare.Write);
            //var serializer = new AMFSerializer(fsS);
            //var hed = new AMFHeader("pr", true, pr);
            //var mes = new AMFMessage();
            //var bod = new AMFBody(target: "pr", response: "pr", content: pr);
            //mes.AddHeader(hed);
            //mes.AddBody(bod);
            //serializer.WriteMessage(mes);
 
            Console.WriteLine("1212");

        }

    }

}

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

textual
Листинг программы
class AcknowledgeMessageExt : AsyncMessageExt, IExternalizable
    {
        private const long serialVersionUID = -8764729006642310394L;
        public const string CLASS_ALIAS = "DSK";
 
        public AcknowledgeMessageExt()
            : this(null)
        {
        }
 
        public AcknowledgeMessageExt(AcknowledgeMessage message)
            : base()
        {
            _message = message;
        }
 
        public virtual string Alias
        {
            get
            {
                return CLASS_ALIAS;
            }
        }
 
        //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
        //ORIGINAL LINE: public void writeExternal(java.io.ObjectOutput output) throws java.io.IOException
        public void WriteExternal(IDataOutput output)
        {
            /*if (_message != null)
            {
                _message.writeExternal(output);
            }
            else
            {
                base.writeExternal(output);
            }*/
        }
 
        public void ReadExternal(IDataInput input)
        {
            base.ReadExternal(input);
 
            short[] flagsArray = readFlags(input);
            for (int i = 0; i < flagsArray.Length; i++)
            {
                short flags = flagsArray[i];
                short reservedPosition = 0;
 
                // For forwards compatibility, read in any other flagged objects
                // to preserve the integrity of the input stream...
                if ((flags >> reservedPosition) != 0)
                {
                    for (short j = reservedPosition; j < 6; j++)
                    {
                        if (((flags >> j) & 1) != 0)
                        {
                            input.ReadObject();
                        }
                    }
                }
            }
        }
 
        private AcknowledgeMessage _message;
    }

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


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

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

5   голосов , оценка 4.2 из 5
Похожие ответы