zoukankan      html  css  js  c++  java
  • flex 与asp.net 配合之道

    1.将flex编译后的程序插入到asp.net页面

    flex的最终输出就是一张网页+一个flash(.swf文件)
    就是用他生成的网页的方式把那个.swf文件插入asp.net页面就可以了。

    flex3项目名字叫TestApp,最简单直接的办法就是,
    把"bin-debug"目录下的:
    TestApp.html
    TestApp.swf
    AC_OETags.js
    playerProductInstall.swf
    这4个文件复制到asp.net网站下面,打开TestApp.html,把内容复制到asp.net程序页面(.aspx文件)中。
    比如Default.aspx:
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
    //把TestApp.html的内容全部复制到这里
    //....
    //...

    总而言之FLEX3最后编译成了一个.swf文件而已,这个文件在网站里面插入的方法和普通的flash动画的那种.swf文件的使用方法是一样的。

    还有其他的要求:flex3程序和网页还有交互,请用"flex externalinterface"搜索

    2.flex程序与asp.net程序交互

    可以使用flex的Loader往asp.net发送请求,获取xml。
    也可以使用ExternalInterface和网页中的js交互,让js发送ajax请求到asp.net。

    下面有一实例,目标是:在flex端将数据Post到asp.net页面中,并将返回的xml数据显示出来

    //Asp.net端代码
    //getxml.aspx代码,保留一行即可,删除其他的html代码
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="getxml.aspx.cs" Inherits="getxml" %>

    //getxml.aspx.cs
    //using System...
    using System.Xml;
    public partial class getxml : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string user_pkid = System.Web.HttpContext.Current.Request.Form["user_pkid"];
            if user_pkid != null)
            {
                 CreateXml();//创建Xml的方法,可使用XmlTextWriter、XmlDocument ,或者直接读取Xml文件等待
            }
        }

        private void CreateXml()
        {
            XmlDocument doc = new XmlDocument();
            XmlNode root = doc.CreateElement("channel");

            XmlElement titleElm = doc.CreateElement("title");
            titleElm.InnerText = "blogweather";

            //...
       
            root.AppendChild(titleElm);
            doc.AppendChild(root);

            XmlTextWriter xw = new XmlTextWriter(Response.OutputStream,System.Text.Encoding.UTF8);//写到页面返回值中
            xw.Formatting = Formatting.Indented;//将Xml格式化
            doc.Save(xw);
            xw.Flush();
            xw.Close();
        }
    }

    Xml数据如下:
    <?xml version="1.0" encoding="UTF-8" ?>
    <channel>
        <title>blogweather</title>
        <link>http://www.blogweather.net</link>
        <description>博客天气预报</description>
    </channel>

    方法一:
    如果所有值均在xml数据中,而且不需要拿这些数据做二次分析,则推荐使用 HTTPService控件

    Flex 端代码:

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="init()" >
     <mx:Script>
      <![CDATA[
       import mx.messaging.AbstractConsumer;
       import flash.events.MouseEvent;
       import mx.controls.Alert;
          
       private function init():void
       {
        getxml.url = "http://www.blogweather.net/getxml.aspx"; //接收Post方法的页面
        var data:Object = new Object();
        data["user_pkid"] = this.parameters.user_pkid;
        getxml.send(data);
       }
                ]]>
     </mx:Script>
     <mx:HTTPService id="getxml" showBusyCursor="true" useProxy="false" method="POST">
     </mx:HTTPService>
     <mx:TextArea  wordWrap="true" editable="false" enabled="true" id="lb_title">
      <mx:text>{getxml.lastResult.channel.title}</mx:text>
     </mx:TextArea>
    </mx:Application>

    方法二:
    如果要将数据进行分析,则要使用URLLoader和URLRequest
    Flex 端代码:

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="init();">
     <mx:Script>
      <![CDATA[
       import mx.messaging.AbstractConsumer;
       import mx.messaging.channels.StreamingAMFChannel;
       import flash.events.MouseEvent;
       import mx.controls.Alert;
          
                 public var myLoader:URLLoader = new URLLoader();
                 public var myRequest:URLRequest;
                 public var user_pkid:String;

       private function init():void
       {
        var http://www.cnblogs.com/glaivelee/admin/String = "http://www.blogweather.net/getxml.aspx";
        myRequest = new URLRequest(url);
        myRequest.method = URLRequestMethod.POST;
        var data:URLVariables = new URLVariables();
        //接收来自flash的参数调用,比如flash文件为 loadxml.swf,带参数 loadxml.swf?user_pkid=10001
        data.user_pkid = this.parameters.user_pkid; // 获取10001
        myRequest.data = data;
        myLoader.load(myRequest);
        myLoader.addEventListener(Event.COMPLETE,onLoadComplete);
       }
       
       private function onLoadComplete(event:Event):void
       {
        var myxml:XML;
        var loader:URLLoader = URLLoader(event.target);
        myxml = new XML(loader.data);
        
        lb_title.text =myxml.child("channel")[0].child("title");
        if( lb_title.text == "blogweather")
        {
         Alert("页面名称为:博客天气预报");
        }
       }
       
      ]]>
     </mx:Script>
     <mx:TextArea  wordWrap="true" editable="false" enabled="true" id="lb_title">
      <mx:text>lb_title</mx:text>
     </mx:TextArea>
    </mx:Application>


  • 相关阅读:
    SuperMap房产测绘成果管理平台
    SuperMap产权登记管理平台
    Android adb shell am 的用法(1)
    由浅入深谈Perl中的排序
    Android 内存监测和分析工具
    Android 网络通信
    adb server is out of date. killing...
    引导页使用ViewPager遇到OutofMemoryError的解决方案
    adb logcat 详解
    How to send mail by java mail in Android uiautomator testing?
  • 原文地址:https://www.cnblogs.com/glaivelee/p/1539856.html
Copyright © 2011-2022 走看看