flex4 与后台服务器通信方式:URLRequest+URLLoader JAVA方式
来源:互联网 发布:西瓜影音mac官方下载 编辑:程序博客网 时间:2024/06/05 00:25
要实现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的具体代码
<span style="font-size: medium;"><?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:Script><![CDATA[import mx.controls.Alert;import mx.rpc.events.FaultEvent;import mx.rpc.events.ResultEvent;import mx.utils.URLUtil;protected function myFlex_resultHandler(event:ResultEvent):void{var name:String=event.result as String;Alert.show(name);}//protected function btnSend_clickHandler(event:MouseEvent):void//{////myFlex.sayHello(txtName.text);//}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/Flex4BlazeDSWeb/test.do"; 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).dataAlert.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><fx:Declarations><!--请把不可视的组件元素例如服务的,值对象的放在声明里面 Place non-visual elements (e.g., services, value objects) here <s:RemoteObject id="myFlex" destination="mytest" result="myFlex_resultHandler(event)" />--></fx:Declarations><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></span>
处理程序为
<span style="font-size: medium;">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);}}</span>
好了.....
- flex4 与后台服务器通信方式:URLRequest+URLLoader JAVA方式
- Flex与服务器交互之一(URLRequest +URLLoader应用)
- AS3 中使用 URLRequest 和 URLLoader 与服务器交互
- AS3 中使用URLRequest 和URLLoader 与服务器交互
- Flex与服务器交互之一(URLRequest +URLLoader应用)
- Flex与服务器交互之一(URLRequest +URLLoader应用)
- flex4与Java交互的三种通信方式
- AS3使用URLRequest和URLLoader服务器交互
- FLEX4中使用URLLoader与后台交互请求XML文件
- FLEX4 URLLoader与后台交互请求XML文件
- Flex4 URLRequest
- 移动客户端与后台通信方式三
- Android与SSH框架服务器通信方式
- Android与SSH框架服务器通信方式 .
- IOS 通过GET方式与服务器通信
- IOS 通过POST方式与服务器通信
- Android客户端与服务器通信方式浅谈
- 移动客户端与服务器通信方式一
- Quickreport 可使用从VCL TDataset 类继承下来的任何数据组件
- java http连接 get post
- 一元线性同余方程&&一元线性m同余方程组(模板)
- Hadoop 新 MapReduce 框架 Yarn 详解
- Lua string 库
- flex4 与后台服务器通信方式:URLRequest+URLLoader JAVA方式
- 计应121--电子商务论文--胡俊琛--2012366161113
- 如何配置Qt使用VS2010进行开发
- 程序员必须知道的10大基础实用算法及其讲解
- Linux系统IPv6配置
- freeswitch初始化和模块加载
- ArcGIS教程:创作和共享地理处理服务快速浏览(一)
- Linux下的 .o、.a、.so文件
- 高通平台USB2.0和3.0接口充电器识别原理