URLRequest是ActionScript和服务端通信的最基本方式(只需要Java后台的Servlet)
要实现ActionScript与服务端交互, 首先必须知道以下几个类:
URLRequest类
记录请求服务端的URL信息, 给URLLoader进行发送操作.
URLVariables类
保存向服务端请求所需的参数, 一般用于POST方式传输,GET方式传输不需要使用.
URLRequestMethod类
该类只有两个静态常量值, 一个是POST, 一个是GET, 可以把它当作是一个枚举类型, 用于指定URL请求时使用POST方式或是GET方式.
URLLoader类
真正与服务端打交道的类, 通过load方法把一个Reuqest发送给服务端, 在load之前必须给该对象添加一个Complete事件的监听器,接收服务器返回的信息. 传输过程中有可能产生IO错误, 有必要时可以为该对象添加IOError监听器.
例子:
var request: URLRequest = new URLRequest("
http://localhost
");
//默认为URLRequestMethod.GET, 若使用GET方式可以不指定
request.method = URLRequestMethod.POST;
//创建一个参数变量对象,用于保存所有向服务发送的参数数据, GET方式可以不使用
var vars: URLVariables = new URLVariables ();
vars["varName"] = varValue; //把参数键,值对放到vars对象中.
vars["var2Name"] = var2Value;
request.data = vars; //把参数对象放进Request对象中作为参数
// 通过request对象创建一个loader,
var loader: URLLoader = new URLLoader(request);
事件及返回值的处理
loader.addEventListener( //给loader对象添加完成时的监听器.
Event.COMPLETE,
function(e: Event):void //临时定义一个监听器
{
//服务端返回的数据是保存在loader的data里,通过以下语句可以得到
trace(URLLoader(e.target).data );//在监听器里处理服务端返回的数据
//complete
// process the data;
}
);
loader.addEventListener( //IOError监听器
IOErrorEvent.IO_ERROR,
//临时监听器,IO错误的处理在该函数中处理
function(e: IOErrorEvent): void {/* process the err;*/}
);
loader.load(request);//把request对象发送到服务端.当请求完成,则会自动触发COMPLETE事件
下面写一个具体的代码示例
mxml的具体代码
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> <fx:Declarations> <!-- 本程序使用URLRequest和URLLoader来通信。这里只用到Java的Servlet而已 --> </fx:Declarations> <fx:Script> <![CDATA[ import mx.controls.Alert; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; import mx.utils.URLUtil; protected function button1_clickHandler(event:MouseEvent):void { var v:URLVariables = new URLVariables("name=jacky&age=35&address=HongKong China"); /* 也可以是这种方式 var vars: URLVariables = new URLVariables (); vars["varName"] = varValue; //把参数键,值对放到vars对象中. vars["var2Name"] = var2Value; */ var r:URLRequest = new URLRequest(); r.url = "http://localhost:8080/FlexWeb/TestServlet"; r.method = URLRequestMethod.POST; r.data = v; var l:URLLoader = new URLLoader(); l.load(r); l.addEventListener(Event.COMPLETE,txtCompleteHandler); //注册请求完成后 响应获取数据事件方法 //labMsg.alpha = 1; } private function txtCompleteHandler(e:Event):void { var l:URLLoader = URLLoader(e.target); /* URLUtil的stringToObject方法解释 从字符串返回对象。字符串包含 name=value 对,它们成为返回对象的动态属性。这些属性对由指定的 separator 分隔。该方法可转换数字、布尔值、数组(由“[]”定义)以及子类(由“{}”定义)。默认情况下,%XX 格式的 URL 模式将转换为相应的字符串字符。 例如: var s:String = "name=Alex;age=21"; var o:Object = URLUtil.stringToObject(s, ";", true); 返回对象:{ name: "Alex", age: 21 }。 */ //直接获取返回值内容: URLLoader(e.target).data //Alert.show(l.data); var o:Object = URLUtil.stringToObject(l.data,";",true); //使用URLUtil对将数据进行反序列化以方便使用 txtName.text = o.name; txtAge.text = o.age; txtAddress.text = o.address; //labMsg.alpha = 0; } ]]> </fx:Script> <s:Panel x="77" y="35" width="198" height="231" title="www.accptecg.com flex4"> <s:TextInput x="47" y="102" id="txtAddress"/> <s:TextInput x="47" y="72" id="txtAge"/> <s:TextInput x="47" y="37" id="txtName"/> <!--<s:Button x="168" y="38" label="发送" id="btnSend" click="btnSend_clickHandler(event)"/>--> <s:Button x="47" y="154" label="按钮" click="button1_clickHandler(event)"/> <s:Label x="0" y="47" text="Name"/> <s:Label x="4" y="81" text="Age" height="13"/> <s:Label x="4" y="115" text="Address" height="13"/> </s:Panel> </s:Application>
Java代码:
package com.cx.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class TestServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取URLResuest请求回的参数 返回数据用;分隔以方便Flex对数据进行序列化 String rs =new String("name="+request.getParameter("name")+";age="+request.getParameter("age")+";address="+request.getParameter("address")); System.out.println(request.getParameter("name")); response.setContentType("text/plain"); System.out.println(rs); response.getWriter().write(rs); //request.getRequestDispatcher("/index.jsp").forward(request, response); } }
发表评论
-
全面认识Flex六大要素
2011-05-08 12:56 885在学习Flex应用程序的 ... -
Flex4之将Sprite控件添加到FLEX UI中
2011-05-08 12:54 1416在Flex的帮助文档里,有很多例子都是扩展Sprite类的。如 ... -
Flex4之元数据标签详解
2011-05-07 23:57 1338Flex 元数据标签 1、[ArrayElementT ... -
Flex4之关于Embed外部资源的使用方法
2011-05-07 20:56 1063Flex软件中经常需要 ... -
Flex之使用ActionScript构造组件
2011-05-07 20:04 952因为是专门针对ActionScript来写的篇章,所以,对于A ... -
Flex获取RGB的值,R、G、B
2011-05-06 20:35 1037<?xml version="1.0" ... -
Flex自制简单菜单
2011-05-06 20:22 1004<?xml version="1.0" ... -
Flex4之为ToolTip设置旋转特效及字体
2011-05-05 21:04 1809<?xml version="1.0" ... -
Flex的Alert中加入超链接
2011-05-05 20:57 1266<?xml version="1.0" ... -
FLEX4之内存释放优化原则
2011-05-05 13:28 7121. 被删除对象在外部的所有引用一定要被删除干净才能被系统 ... -
Flex4之简易MP3播放器
2011-05-03 20:55 1143<?xml version="1.0" ... -
Flex4之DataGrid示例【客户端和服务器端]
2011-05-03 19:27 1754由于我的DataGrid与JAVA后 ... -
Flex4表单验证
2011-05-01 22:34 2047这里主要讲Combox的验证。其他几个略带说说。 ... -
Flex4 事件详解
2011-04-17 16:10 1026第一、Flex事件简介 ... -
向Tree空间添加删除XML数据节点_Flex4
2011-03-31 20:50 2117Flex4控件例程: 基于Http ...
相关推荐
标题中的“Flex与Java低数据量通信”是指在ActionScript(Flex的主要编程语言)和Java之间进行少量数据交互的技术。这种通信通常用于实现客户端(Flex应用程序)和服务器端(Java应用)之间的轻量级通信,比如请求...
2. **Flex客户端与Servlet通信**: Flex客户端通过HTTP服务与Servlet交互,主要使用`URLRequest`类发送HTTP请求,`URLLoader`类加载响应数据。HTTP方法通常是POST或GET,数据格式可以是XML、JSON或自定义格式。 3. *...
至于“后台能捕捉到flash的播放情况”,这通常涉及到与服务器的通信。ActionScript 3.0提供了Socket、XMLSocket、URLLoader等类来实现客户端与服务器的数据交换。如果你希望在用户点击时发送数据到服务器,可以使用...
Flex可以与后台服务器通过HTTP服务通信,使用URLLoader和URLRequest类发送文件数据。可能还需要处理文件编码和分块上传等问题。 5. **源码分析**:源码对于学习Flex开发和理解截图工具的工作原理十分有价值。通过...
在Flex端,可以使用`flash.net.URLRequestHeader`设置请求头的`charset`属性,而在服务器端,如使用PHP、Java等后台语言,也要确保文件读写和HTTP响应时的编码设置正确。 总的来说,Flex中的文件上传、预览和下载...
而Java作为服务器端编程的主要语言之一,其稳定性和跨平台性使得它成为处理大量数据和实现复杂逻辑的理想选择。因此,将Flash前端与Java后端相结合,可以创造出功能强大且用户体验优秀的应用。 ### Flash Builder中...
使用URLLoader和URLRequest类,ActionScript 3.0可以与服务器进行HTTP和FTP通信,实现数据的发送和接收。同时,Socket和XMLSocket类提供了低级别的网络通信功能,用于创建实时的网络应用程序。 八、错误处理和调试 ...