`
snoopy7713
  • 浏览: 1149321 次
  • 性别: Icon_minigender_2
  • 来自: 火星郊区
博客专栏
Group-logo
OSGi
浏览量:0
社区版块
存档分类
最新评论

Flex与服务器交互之一(URLRequest +URLLoader应用) .

    博客分类:
  • Flex
 
阅读更多

  由于Flex只是一种客户端技术其本身并不能直接同数据库交互,在实际的应用开发过程中Flex提供了如URLRequest、HTTPService、RemoteObject、WebService等类以实现同服务器的通讯和数据交互,下面做一些介绍和实例解析:
   1、使用URLRequest向服务器发送请求,使用URLLoader接收服务器返回的数据:
    URLRequest类可捕获单个 HTTP 请求中的所有信息,可以将 URLRequest 对象传递给 Loader、URLStream 和 URLLoader 类以及其他加载操作的 load() 方法以启动 URL 下载;默认情况下,传递给 url 参数的 URL 必须与执行调用的 SWF 文件在完全相同的域,包括子域。如果要从其它域中加载数据,请在承载数据的服务器上放置一个跨域策略文件。有关URLRequest详细可参看http://help.adobe.com/zh_CN/AIR/1.1/jslr/flash/net/URLRequest.html
   URLVariables类主要用来在应用程序和服务器之间传输参数变量;详细查看:http://livedocs.adobe.com/flex/3_cn/langref/flash/net/URLVariables.html
   URLLoader 类以文本、XML、二进制数据或 URL 编码变量的形式从 URL 返回请求的数据详细请参看:http://livedocs.adobe.com/flex/3_cn/langref/flash/net/URLLoader.html

    完成以下示例要引用到的Flex包:

  1. import mx.rpc.events.FaultEvent;  
  2. import mx.collections.XMLListCollection;  
  3. import flash.net.URLLoader;  
  4. import flash.net.URLRequest;  
  5. import flash.net.URLVariables;  
  6. import flash.net.URLRequestMethod;  
  7. import flash.events.Event;  
  8. import mx.utils.URLUtil;  
  9. import mx.collections.ArrayCollection;  
  10. import mx.rpc.events.ResultEvent;  
  11. import com.adobe.serialization.json.JSON;  


   2、应用示例一:通过URLRequest和URLVariables向服务器发送参数请求并返回服务器文本数据(以下服务器端都采用asp.net编写)
   服务器端代码:

  1. protected void Page_Load(object sender, EventArgs e)  
  2. {  
  3.         //获取URLResuest请求回的参数 返回数据用;分隔以方便Flex对数据进行序列化   
  4.         string rs = String.Format("name={0};age={1};address={2}",Request.QueryString["name"],  
  5.                                                                  Request.QueryString["age"],  
  6.                                                                  Request.QueryString["address"]);  
  7.         Response.ClearContent();  
  8.         Response.ContentType = "text/plain";  
  9.         Response.Write(rs); //以文本形式返回数据   
  10.         Response.End();  
  11. }  



   FLEX中发送请求:

  1. private function getText():void  
  2. {  
  3.     var v:URLVariables = new URLVariables("name=jacky&age=35&address=HongKong China");  
  4.     var r:URLRequest = new URLRequest();  
  5.     r.url = "http://localhost:2222/FlexService/TextFrm.aspx";  
  6.     r.method = URLRequestMethod.GET;  
  7.     r.data = v;  
  8.      
  9.     var l:URLLoader = new URLLoader();  
  10.     l.load(r);  
  11.     l.addEventListener(Event.COMPLETE,txtCompleteHandler); //注册请求完成后 响应获取数据事件方法   
  12.     labMsg.alpha = 1;  
  13. }  


   Flex中接收返回数据

  1.    private function txtCompleteHandler(e:Event):void  
  2. {  
  3.     var l:URLLoader = URLLoader(e.target);  
  4.     var o:Object = URLUtil.stringToObject(String(l.data)); //使用URLUtil对将数据进行反序列化以方便使用   
  5.     txtName.text = o.name;  
  6.     txtAge.text = o.age;  
  7.     txtAddress.text = o.address;  
  8.     labMsg.alpha = 0;  
  9. }  


   3、应用示例二:返回JSON格式数据:
   服务器端代码:
    

  1. public partial class JsonFrm : System.Web.UI.Page  
  2.     {  
  3.         Person person;  
  4.         protected void Page_Load(object sender, EventArgs e)  
  5.         {  
  6.             person = new Person();  
  7.             person.Name = "YAO MING";  
  8.             person.Age = 29;  
  9.             person.Address = "ShangHai China";  
  10.             HttpContext.Current.Response.ClearContent();  
  11.             HttpContext.Current.Response.ContentType = "text/plain";  
  12.             System.Runtime.Serialization.Json.DataContractJsonSerializer dcjs = new System.Runtime.Serialization.Json.DataContractJsonSerializer(person.GetType());  
  13.             dcjs.WriteObject(HttpContext.Current.Response.OutputStream,person);  
  14.             HttpContext.Current.Response.End();  
  15.         }  
  16.     }  
  17.     [System.Runtime.Serialization.DataContract]  
  18.     public class Person  
  19.     {  
  20.         [System.Runtime.Serialization.DataMember]  
  21.         public String Name{get;set;}  
  22.         [System.Runtime.Serialization.DataMember]  
  23.         public int Age { getset; }  
  24.         [System.Runtime.Serialization.DataMember]  
  25.         public String Address { getset; }  
  26.     }  



   FLEX中发送请求:
   

  1. private function getJson():void  
  2.     {  
  3.         var v:URLVariables = new URLVariables();  
  4.         var r:URLRequest = new URLRequest();  
  5.         r.url = "http://localhost:2222/FlexService/JsonFrm.aspx";  
  6.         r.method = URLRequestMethod.GET;  
  7.         r.data = v;  
  8.          
  9.         var l:URLLoader = new URLLoader();  
  10.         l.load(r);  
  11.         l.addEventListener(Event.COMPLETE,jsonCompleteHandler);  
  12.         labMsg.alpha = 1;  
  13.     }  


   Flex中接收返回数据
  

  1. public function jsonCompleteHandler(e:Event):void  
  2.   {  
  3.       var l:URLLoader = e.target as URLLoader;  
  4.       var o:* = JSON.decode(l.data);  
  5.        
  6.       txtName.text = o.Name;  
  7.       txtAge.text = o.Age;  
  8.       txtAddress.text = o.Address;  
  9.       labMsg.alpha = 0;  
  10.   }  


  4、应用示例三:返回XML格式数据:
  服务器端代码:

  1. protected void Page_Load(object sender, EventArgs e)  
  2.   {  
  3.       String s = @"<?xml version=""1.0"" encoding=""utf-8""?>  
  4.                       <EV_ChartData_Scatter xmlns=""http://www.byd.com/ChartData/XML"">   
  5.                         <ScatterItem id=""0"">  
  6.                           <CAN_ITEM_ID>561</CAN_ITEM_ID>  
  7.                           <CAN_ITEM_NAME>主控ECU通讯状况</CAN_ITEM_NAME>  
  8.                           <ITEM_VALUE>0</ITEM_VALUE>  
  9.                           <MATCH_VALUE>正常</MATCH_VALUE>  
  10.                          </ScatterItem>  
  11.                         <ScatterItem  id=""1"">  
  12.                           <CAN_ITEM_ID>561</CAN_ITEM_ID>  
  13.                           <CAN_ITEM_NAME>主控ECU通讯状况</CAN_ITEM_NAME>  
  14.                           <ITEM_VALUE>1</ITEM_VALUE>  
  15.                           <MATCH_VALUE>丢包</MATCH_VALUE>  
  16.                         </ScatterItem>  
  17.                       </EV_ChartData_Scatter>";  
  18.       Response.ClearContent();  
  19.       Response.ContentType = "text/xml";  
  20.       Response.Write(s);  
  21.       Response.End();  
  22.   }  



   FLEX中发送请求:
   

  1. private function getXML():void  
  2.     {  
  3.         var v:URLVariables = new URLVariables();  
  4.         var r:URLRequest = new URLRequest();  
  5.         r.url = "http://localhost:2222/FlexService/XMLFrm.aspx";  
  6.         r.method = URLRequestMethod.GET;  
  7.         r.data = v;  
  8.          
  9.         var l:URLLoader = new URLLoader();  
  10.         l.load(r);  
  11.         l.addEventListener(Event.COMPLETE,xmlCompleteHandler);  
  12.     }  


   Flex中接收返回数据

  1. [Bindable]  
  2.         private var xml:XML;  
  3.         private function xmlCompleteHandler(e:Event):void  
  4.         {  
  5.             var l:URLLoader = e.target as URLLoader;  
  6.             xml= new XML(l.data);  
  7.             for each(var v in xml.ScatterItem)  
  8.             {  
  9.                  
  10.             }  
  11.             labMsg.alpha = 0;  
  12.         }  
分享到:
评论

相关推荐

    Flex之URLLoader加载XML

    在Flex开发中,`URLLoader` 是一个非常重要的类,用于加载远程数据,如XML、JSON等。在本示例中,它被用来从服务器获取XML文件并将其内容解析为XML对象,以便在应用程序中使用。`Flex` 是Adobe开发的一个开放源代码...

    Flex与后台交互的方法_HTTPService_WebService_URLLoader

    在Flex应用中,与后台服务器的交互是必不可少的功能,以便获取或更新数据,实现动态功能。本篇文章将详细探讨Flex与后台交互的三种主要方法:HTTPService、WebService和URLLoader。 1. HTTPService: HTTPService是...

    Flex与后台交互的几种方法详解

    根据提供的标题、描述、标签及部分内容,本文将详细介绍Flex与后台进行交互的三种主要方法:通过FlashVars传递参数、利用HttpService服务以及采用URLLoader组件。这些方法在Flex开发中非常常见,对于实现数据的前后...

    flex与后台交互的四种方法.doc

    根据提供的文档内容,本文将详细介绍Flex与后台交互的四种方法中的两种主要方法:HTTPService 和 URLLoader。这两种方法在Flex开发中非常常见,并且在实际应用中具有很高的实用价值。 ### 一、HTTPService #### 1....

    Flex与Web服务的交互

    Flex与Web服务的交互是构建富互联网应用程序(RIA)中不可或缺的一部分,它允许客户端的Flex应用与服务端进行数据交换,实现动态功能和实时更新。本文将深入探讨Flex与Web服务交互的三种主要方式:基本的HTTP交互...

    flex与后台交互的方法(内有代码)

    本文将详细介绍使用Flex进行后台交互的两种主要方式:通过`HTTPService`和`URLLoader`来实现与服务器的通信。 #### HTTPService:面向服务的交互方式 `HTTPService`是Flex框架提供的一个用于执行HTTP请求的类,它...

    flex通过URL获取request参数

    在Flex开发中,我们经常需要从URL中获取请求参数,以便在应用程序中使用这些数据进行交互。本篇文章将深入探讨如何在Flex应用中通过URL获取`request`参数,并结合提供的文件列表来阐述实际操作步骤。 标题中的"flex...

    Flex在myeclipse下如何配置以及用serverlet的交互

    2. **Flex客户端与Servlet通信**: Flex客户端通过HTTP服务与Servlet交互,主要使用`URLRequest`类发送HTTP请求,`URLLoader`类加载响应数据。HTTP方法通常是POST或GET,数据格式可以是XML、JSON或自定义格式。 3. *...

    flex用两种方法读取xml文件

    HTTPService是Flex提供的一种用于与Web服务器进行异步通信的组件,它基于HTTP协议。以下是如何使用HTTPService来获取并解析XML数据的步骤: (1)导入必要的库: ```actionscript import mx.rpc.http.HTTPService; ...

    flex监听浏览器关闭事件

    在Flex应用中监听浏览器关闭事件主要依赖于JavaScript与Flash/Flex之间的交互。当用户尝试关闭浏览器窗口时,`window.onbeforeunload`事件会被触发。我们可以通过在Flex应用中调用JavaScript来监听这个事件,并在...

    Flex与Java低数据量通信息二:URLLoader及非视图组件的事件发布订阅

    标题中的“Flex与Java低数据量通信”是指在ActionScript(Flex的主要编程语言)和Java之间进行少量数据交互的技术。这种通信通常用于实现客户端(Flex应用程序)和服务器端(Java应用)之间的轻量级通信,比如请求...

    flex跨域访问问题

    然而,在Flex应用与不同源的服务器进行数据交互时,可能会遇到跨域访问的问题。跨域是Web浏览器的一个安全限制,它阻止了一个页面中的脚本直接访问另一个不同源的资源,除非目标服务器明确允许。 ### 跨域问题详解 ...

    Flex通过web返回客户端IP

    它允许开发者创建具有丰富图形用户界面的Web应用,并且能够与后端服务器进行数据交互。本主题将详细介绍如何在Flex中通过Web服务获取客户端的IP地址,以及在本地测试时如何处理局域网和本机IP地址。 1. **Flex与Web...

    flex 案例

    Flex是一个强大的开发框架,用于构建富互联网应用程序(RIA),而与后端服务器的交互是此类应用不可或缺的一部分。 ### Flex与JSP交互基础 在Flex中,`URLLoader`类是用于加载非二进制数据(如文本或XML)的主要...

    Flex里解析XML数据

    在Flex开发中,XML数据是一种常见的数据交换格式,它轻量、可读性强,适合用于Web应用程序中的数据传输。本文将深入探讨如何在Flex中解析XML数据,以及相关的工具和技术。 1. XML基础 XML(Extensible Markup ...

    总结flex各种用法

    根据提供的文件信息,我们可以总结出Flex中的多个实用技巧与应用场景。以下是对这些知识点的详细解析: ### 1. 获取屏幕分辨率 在Flex中获取屏幕分辨率是通过`Capabilities`类完成的,具体做法如下: ```...

    flex保存Canvas中内容为图片上传到j2ee服务器.docx

    在开发交互式应用程序时,有时需要将用户在Canvas上的操作转化为可保存的图像。这篇文档主要介绍了如何在Flex中将Canvas内容保存为图片并上传到J2EE服务器的过程。以下是详细步骤: 1. **从Canvas中提取内容** 在...

Global site tag (gtag.js) - Google Analytics