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;
}