• 转:Flash与.NET的通信(一):XMLConnector的应用


    Flash与.NET的通信(一):XMLConnector的应用

       一:简介
             XML是已成为Internet中结构化数据交换的标准,大多数服务器技术(如ASP.NET)都支持XML。从Flash MX开始,对XML也提供了良好的支持,我们将通过XML作为服务器端ASP.NET与客户端Flash的数据交换。
            XMLConnector 组件(仅限Flash Professional)是一种 Flash MX 2004 v2 组件,它的用途是使用 HTTP get 操作或post 操作读或写 XML 文档。它充当其他组件和外部 XML 数据源之间的连接器.XMLConnector 使用 Flash MX Professional 2004 创作环境中的数据绑定功能或动作脚本代码与应用程序中的组件进行通信。XMLConnector 组件具有属性、方法和事件,但它没有运行时可视外观。XMLConnector 组件实现了 RPC(远程过程调用)组件 API、一组方法、属性,以及用于定义向外部数据源发送参数和从其接收结果的便捷方法的事件。
            二:测试平台
           语言: ASP.NET 2.0/1.x(C#)    Actionscrīpt 2.0
           环境: IIS6.0   Win Server 2003  IE7  FlashPlayer8
           开发平台:Visual Studio 2005 , Flash 2004 Professional

           三:知识要点
               Actionscrīpt        XMLConnector:详细请参见附件(Flash7.0组件.PDF)
               属性:XMLConnector.direction   指示是发送、接收数据还是两者同时进行。
    值为:"receive": 没有params 数据被发送到 URL。通过 HTTP GET 访问 XML 文档的 URL,并 预期从该 URL 收到有效的 XML 数据。 "send/receive":params 数据被发送到 URL,并预期从该 URL 收到有效的 XML 数据。
              属性:
    XMLConnector.URL   此组件在执行 HTTP 操作时所使用的 URL(页面或XML文件URL地址)。
              属性:XMLConnector.params    指定在执行下一个 trigger() 操作时要发送到服务器的数据。
              属性:XMLConnector.results    标识作为 trigger() 操作的结果从服务器接收的数据。
              方法:XMLConnector.trigger()   启动远程过程调用。
              事件:XMLConnector.result         远程过程调用成功完成后广播
              事件:XMLConnector.send          在处理 trigger() 操作期间(在收集了参数数据后,但在验证这些数据和启动远程过程调用前)广播。此位置适合于存放将在调用前修改参数数据的代码。
          四。具体实现
               新建Flash文档;
               主要组件:Button(btnSend),输入文本(inputTextA),输入文本(inputTextB), 输入文本(Result);
               服务器页面:XMLConnectorTest.aspx接收Flash的字符串A和B,将A和B的内容组合后送会给Flash
               功能:点击按钮Button(btnSend)时,将输入文本(inputTextA)和(inputTextB)的内容发送给XMLConnectorTest.aspx页面,页面接收到内容后,将两字符串相加获得结果,并将字符串回送给Flash,显示在 输入文本(Result);
    Actionscrīpt:
    btnSend.onRelease = function()   //点击发送按钮时执行
    {
          xmlConn.ignoreWhite = true;  //默认设置为 false。当设置为 true 时,在分析过程中将放弃仅包含空白的文本节点。
          xmlConn.direction = "send/receive";  //方向为发送并且接收
          xmlConn.URL = http://localhost/FlashWebTest/XMLConnectorTest.aspx;  //(换成自己ASPX的URL,可以为相对路径,注:相对路径下必须将Flash嵌入IE中播放)
          var strXml= "<SendInfo><TextA>"+inputTextA.text+"</TextA><TextB>"+inputTextB.text+"</TextB></SendInfo>";
    //定义Xml字符串获取两个输入文本的值
          xmlConn.params = new XML(strXml);  //定义要发送的XML,并送给发送参数
          xmlConn.addEventListener("send", sendFunction);    //定义发送时过程调用
           xmlConn.addEventListener("result", resultFunction); //定义接收时的过程调用
          xmlConn.trigger();   //启动远程过程调用
    };
    //发送函数

    function sendFunction(e)
    {
            Result.text = "正在发送..."
    }
    //接收函数
    function resultFunction(e)
    {
             var resultXml:XML = new XML();
             resultXml.ignoreWhite = true;
             resultXml.parseXML(e.target.results);   //获取接收后得值results(接收的XML字符串与ASPX页面发送的一致)
             if(resultXml.firstChild.nodeName == "result")
             {
                       Result.text = e.target.results.toString().slice(8,-9);
             }
             else
            {
                     Result.text = "接收错误!";
            }
    }
    stop();

    ASP.NET (C#) XMLConnectorTest.aspx
    protected void Page_Load(object sender, EventArgs e)
    {
            Stream xmlStream = Request.InputStream;
            DataSet DS = new DataSet();
            DS.ReadXml(xmlStream);
            string xmlStr = DS.GetXml();
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.LoadXml(xmlStr);
            string strA = xmlDoc.SelectSingleNode("SendInfo").SelectSingleNode("TextA").InnerText;
            string strB = xmlDoc.SelectSingleNode("SendInfo").SelectSingleNode("TextB").InnerText;
            string resultXml = "<result>"+strA+strB+"</result>";//建立的XML字符串与Flash接收的字符串格式一致
            Response.Write(resultXml);
    }

       结果:Flash中“输入文本(inputTextA)”输入Hello,“输入文本(inputTextB)”输入XmlConnector,点击发送按钮后,接收数据为“HelloXmlConnector”,
  • 相关阅读:
    LeetCode 127. Word Ladder 单词接龙(C++/Java)
    LeetCode 681. Next Closest Time 最近时刻 / LintCode 862. 下一个最近的时间 (C++/Java)
    LeetCode 682. Baseball Game 棒球比赛(C++/Java)
    LeetCode 218. The Skyline Problem 天际线问题(C++/Java)
    小数据池,编码
    字典
    列表
    常见的数据类型
    while循环
    初始python
  • 原文地址:https://www.cnblogs.com/Magicam/p/1273276.html
Copyright © 2020-2023  润新知