Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

*.aspx <=> Flash

17K
03 мая 2007 года
IYAKOV
49 / / 03.05.2007
Подскажите пожалуйста, как можно реализовать получение - передачу данных из\в Flash в\из .aspx страницу? У меня есть код, но он очень древний и не работает.

код тут
http://sources.codenet.ru/download/1389/5_3_gif.html
273
05 мая 2007 года
3A3-968M
1.2K / / 22.12.2005
Код довольно странный, взглянуть бы на классы FlashXmlProcessor и на класс Result, да и вообще что он делает??? Да и, собственно, какими данными собралась обмениваться ASPX-страница с флэш-мувиком?
17K
05 мая 2007 года
IYAKOV
49 / / 03.05.2007
Нашел данные тут, по этому примеру и делаю
http://www.intel.com/cd/ids/developer/emea/rus/320435.htm?page=5
http://blogs.gotdotnet.ru/personal/ddbear/CommentView.aspx?guid=8A980890-C9A5-48DD-B1CF-8AFFEBF6740D#commentstart
Как я понял, класс FlashXmlProcessor просто обрабатывает xml документ для дальнейшего использования. А класс Result - представляет собой структуру xml документа. Данные для обмена xml.

В принципе я не уверен. у меня ничего не компилится( Нашел 3 ссылки на эту тему - содержимое у всех идентичное. Я не понимаю как оно работает!(((
273
05 мая 2007 года
3A3-968M
1.2K / / 22.12.2005
Всё просто, основную часть делает Flash-мувик, тебе надо написать скрипт на ActiveScript, который выполняет загрузку данных методом GET или POST, происходит асинхронная отправка страницы на сервер, там эти данные ты отлавливаешь из кода на C# через свойство Response. Правда на счёт ActiveScript я тебе не помогу:(
17K
06 мая 2007 года
IYAKOV
49 / / 03.05.2007
1) Получение данных из Флеш:
Код:
protected void Page_Load(object sender, EventArgs e)
    {
            //RECEIVE

            string stream = "";
            try
            {
                //Здесь все ok: вывожу по байту входящий поток со строкой с xml
                for(int i=0; i<=Request.InputStream.Length-1; i++)
                {
                    stream+=((char)Request.InputStream.ReadByte()).ToString();
                }

                if(stream.Length>0)
                {
                    XmlDocument doc = new XmlDocument();
                    [COLOR="Red"]doc.Load(Request.InputStream);[/COLOR]
                }
            }
            catch
            {
            }

А красным выделил ошибку: "Root element is missing.". Объясните, пожалуйста в чем ошибка? xml имеет вид:
 
Код:
<login><name>myName</name><password>MyPass</password></login>


2) отправка данных во Флеш
Код:
//SEND
            try
            {
                if(stream.Length>0)
                {
                    Response.ContentType = "text/xml";
                    XmlSerializer XmlSr = new XmlSerializer(typeof(ErrorXMLType));
                    ErrorXMLType xmlE = new ErrorXMLType();
                    xmlE.error="xmlExcepction";
                    xmlE.message="Root element is missing.";
                    XmlSr.Serialize(Response.Output, xmlE);
                }
            }
            catch
            {
            }

Но! у меня вместе с xml посылается еще и вся сгенерированная ASP страница. А это во много раз больше передаваемой инфы! Или все передается только один раз: и загружается страница и передаются данные? Как мне быть, не подскажите?

 
Код:
Response.Write(XmlHelper.Serialize.Xml(typeof(Result), res));

я так и не нашел данного класа!!!!! Он существует?
30K
05 июня 2007 года
levik
3 / / 05.06.2007
Здравствуйте IYAKOV,

Удалось ли Вам найти решение "разговора" между Flash и ASP.NET?
У меня та-же задача и я не знаю с какой стороны к ней подступиться.
17K
05 июня 2007 года
IYAKOV
49 / / 03.05.2007
Добрый день, levik
Да, этот вопрос я решил. Правдо появились другие "разногласья". У Вас может таких не будет) Пока борюсь, если что то придется спросить на форуме)

Обращайтесь ICQ 307731143

P.S.могу выложить код сюда, хотя впринципе он сильно не отличается от выше изложенного, так что не вижу смысла. Решение простое - пусть народ чуть-чуть подумает)))
30K
05 июня 2007 года
levik
3 / / 05.06.2007
Еще раз здравствуйте, IYAKOV

Буду очень Вам признателен, если сможете выложить код на форум, или если Вам это более удобно - на мою личку.

Заранее благодарствую!

P.S. аськой еще не завелся - вот такая деревня :-)
17K
05 июня 2007 года
IYAKOV
49 / / 03.05.2007
Цитата: levik
Еще раз здравствуйте, IYAKOV

Буду очень Вам признателен, если сможете выложить код на форум, или если Вам это более удобно - на мою личку.


Ну если выкладывать, то уже для всех))

Цитата: levik

P.S. аськой еще не завелся - вот такая деревня :-)


Пора бы, пора. Очень хорошая вещь)

Цитата: levik

Заранее благодарствую!


У меня будут встречные вопросы...

17K
05 июня 2007 года
IYAKOV
49 / / 03.05.2007
Код:
public partial class login : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string error="";
        //
        loginFunctions lf = new loginFunctions();

        //RECEIVE xml
        //проверка. пришло ли что-нибудь? т.к. при чтении может возникнуть ошибка, если ничего не пришло
        XmlDocument inputDoc = lf.ReceiveXML(Request.InputStream);
        if(inputDoc != null)
        {
            //analize name&password ==> check in base
            //передаем документ и [COLOR="Red"]сессию[/COLOR]. почему-то [COLOR="Red"]вызвать из функции ее не удалось[/COLOR]
            error = lf.AnalyseXML(inputDoc, Session);
            //SEND answer xml <""> or <error>
            //исходящий поток и исходящая информация. опять же [COLOR="Red"]response вызвать из функции не получилось[/COLOR]
            error = lf.SendXML(Response, error);
        }
    }
}

Код:
public class loginFunctions
{
    /// <summary>
    /// Receive income xml and convert it to xml
    /// </summary>
    /// <param name="incomeStream">Stream of income data</param>
    /// <returns>XmlDocument</returns>
    public XmlDocument ReceiveXML(Stream incomeStream)
    {
        XmlDocument doc=null;
        try
        {
            //чтение по символьное. преобразовывание в xml
            if(incomeStream.Length>0)
            {
                string stream = "";
                for(int i=0; i<=incomeStream.Length-1; i++)
                    stream+=((char)incomeStream.ReadByte()).ToString();

                XmlReaderSettings settings = new XmlReaderSettings();
                settings.ConformanceLevel = ConformanceLevel.Fragment;
                settings.IgnoreWhitespace = true;

                //о, чудо! делаем преобразования StreamReader => StringReader => XmlReader => xmlDocument
                doc = new XmlDocument();
                doc.Load(new StringReader(stream));
            }
        }
        catch
        {
            return null;
        }
        return doc;
    }
    /// <summary>
    /// Analyse income xml Name and pass and try to LOGIN
    /// </summary>
    /// <param name="doc">XmlDocument</param>
    /// <param name="Session">current HttpSessionState</param>
    /// <returns>error is happened</returns>
    public string AnalyseXML(XmlDocument doc, HttpSessionState Session)
    {
        //LOGIC STRUCTURE HERE
        //1) analyse type
        //2) do action requested

        string userName = "";
        string userPassword = "";

        //1) здесь помещается анализатор xml, который вам нужно
        XmlNode root=doc.FirstChild;
        for(XmlNode node=root.FirstChild; node!=null; node=node.NextSibling)
        {
            switch(node.Name)
            {
                case "name":
                    userName+=node.FirstChild.Value;
                    break;
                case "password":
                    userPassword+=node.FirstChild.Value;
                    break;
            }
        }

        //2) тут обращение к сервису если надо 8)
        ServerService ss = new ServerService();
        string answer = ss.UserLogIn(userName, userPassword);
        if(answer.Substring(0,7)=="welcome")
        {
            Session["user"] = userName;
            return answer;
        }
        return answer;
    }
    /// <summary>
    /// Send Error xml to flash
    /// </summary>
    /// <param name="outcome">HttpResponse</param>
    /// <param name="errorMsg">error</param>
    /// <returns>error if appears during sending</returns>
    public string SendXML(HttpResponse outcome, string errorMsg)
    {
        try
        {
            //send error to the flash client
            //ставим тип отправляемой ин-фы xml, картинка, текст...
            outcome.ContentType = "text/xml";
            outcome.Clear();
           
            //структура xml создается по структуре класса
            xmlAuthorithationAnswer au = new xmlAuthorithationAnswer();
            au.answer = errorMsg;
            //сериализуется и отправляется
            XmlSerializer XmlSerialized = new XmlSerializer(typeof(xmlAuthorithationAnswer));
            XmlSerialized.Serialize(outcome.OutputStream, au);
        }
        catch(Exception exc)
        {
            return exc.Message;
        }
        return "";
    }
}

Код:
//структура входящих и исходящих xml
/// <summary>
/// XMLType received from Client
/// </summary>
public class xmlAuthorithation
{
    public string userName="";
    public string userPassword="";
}
/// <summary>
/// XMLType send to Client
/// </summary>
public class xmlAuthorithationAnswer
{
    public string answer="";
}
17K
06 июня 2007 года
IYAKOV
49 / / 03.05.2007
Если есть предложения по оптимизации или усовершествованию. то пишите)))

Про Flash. Код тоже писать? Тут у меня вопросы возникают, т.к. считаю. что из-за нее и проблемы на странице.

Как ведет себя Flash при запросе на SendAndLoad()? Почему-то у меня flash глючит если после отправки в нее xml и вызов redirectFromLoginPage, то этот xml не доходит до flash а зависает. И если попробовать перейти на другую страницу, то пишет что на страницу передается потенциально опасная ин-фа (наш отправляемый xml)??
30K
06 июня 2007 года
levik
3 / / 05.06.2007
Большое спасибо, IYAKOV!

Начну разбираться и, если сумею, постараюсь ответить на поднятые вопросы.
17K
06 июня 2007 года
IYAKOV
49 / / 03.05.2007
Обращайтесь, если надо. Всегда рад помочь)
Напишите о результате
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог