这次说的URLRequest是ActionScript和服务端通信的最基本方式

要实现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>

处理程序为

Java代码

<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>

  

好了,这次的URLRequest方式就到此为止了

转载于:https://www.cnblogs.com/regalys168/p/3626874.html

Flex4之与后台服务器通信方式:URLRequest+URLLoader【JAVA方式】相关推荐

  1. 移动客户端与服务器通信方式一

    *今天测试了一下Java 给iOS客户端推送消息,包括静默推送 ,还有别名推送,其实是和token绑定在一块的,别名推送是用于 有用户分群需求的应用,什么时候绑定token,什么时候解绑(用户退出登录 ...

  2. ngrok服务器搭建_C/C++ Linux 后台服务器开发高级架构师学习知识路线总结

    前言: 小编也是从事c方面10多年的工作经验.今天跟大家分享一下我总结出来的一系列 C/C Linux后台服务器开发的学习路线.从Linux开发工程师-Linux后台开发工程师-Linux高级互联网架 ...

  3. 这可能是东半球最保姆级的后台服务器开发学习路线

    作者 | 编程指北 来源 | 编程指北(id :cs_dev) 前言 这一篇的主题是「Linux C/C++ 服务器/后台开发学习路线」. 这样的文章相信大家都见得不少了,写之前也非常忐忑,能不能和其 ...

  4. 后台服务器经典面试题

    后台服务器经典面试题 1, 使用Linux epoll模型,水平触发模式(Level-Triggered):当socket可写时,会不停的触发socket可写的事件,如何处理? 2, 从socket读 ...

  5. Python Web实时消息后台服务器推送技术---GoEasy

    越来越多的项目需要用到实时消息的推送与接收,怎样实现最方便呢?我这里推荐大家使用GoEasy,它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推送 支持we ...

  6. C# Web实时消息后台服务器推送技术---GoEasy

    越来越多的项目需要用到实时消息的推送与接收,怎样实现最方便呢?我这里推荐大家使用GoEasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推送 支持w ...

  7. soapui模拟桩mockservice---模拟后台服务器

    soapui模拟桩mockservice---模拟后台服务器 soapui的mockservice可以模拟服务器后端,对前端的请求给出响应,为了扩大mockservice可覆盖的范围,可以把mocks ...

  8. ASP.NET Web实时消息后台服务器推送技术---GoEasy

    越来越多的项目需要用到实时消息的推送与接收,怎样用ASP.NET实现最方便呢?我这里推荐大家使用GoEasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEa ...

  9. WebSocket webshop后台服务器的一些全局数据结构

    这些数据结构都维护在内存中,目前无持久化. 位置:wsServerforWebShop.js oTransactionID_SiteDetailMap 每次webshop的KOI login按钮点击之 ...

最新文章

  1. python魔术方法call_php魔术方法__call
  2. Android中获取系统内存信息以及进程信息-----ActivityManager的使用(一)
  3. torch 使用hdf5训练
  4. Hibernate3的配置参数汇总
  5. 互联网项目中MySQL应该选什么事务隔离级别
  6. 【Python】Pandas宝藏函数-concat()
  7. 过了一个有意义的愚人节
  8. 解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法
  9. linux自动挂载ntfs分区,Ubuntu 12.04 开机自动挂载ntfs分区
  10. CC攻击及其解决方法
  11. idea 包拆分_idea springboot项目拆分多模块踩坑记(1)
  12. intellij 专业版 TomCat9
  13. 微服务熔断限流Hystrix之流聚合
  14. jqprint 打印表格宽度_只要30秒!快速解决Excel表格打印问题
  15. Ubuntu更新Chrome到最新的版本
  16. oracle net Manager 配置连接 tiptop 鼎捷ERP 数据库
  17. reCAPTCHA打不开的解决方法
  18. 电脑如何共享无线网络wifi给手机、其他电脑
  19. 华为路由器接口如何区分_华为路由器的usb接口是什么意思
  20. 【DataWhale学习】Day10~13-4章决策树——西瓜书学习摘录笔记

热门文章

  1. Simulink仿真 第五节 复用器和分路器
  2. matlab 寻找二进制图像边缘
  3. c语言已知斜率 求倾角,倾斜解的问题
  4. idea调试怎么跳出循环_使用IDEA的Debug调试功能,查看程序的运行过程
  5. Python的进程和线程(二)——IO密集型任务
  6. Numpy_构建列向量
  7. jmgraph前端画图组件(html5版)
  8. python debug【】
  9. 简单介绍Fedora 8飞信安装及解压
  10. UA MATH567 高维统计II 随机向量7 Grothendieck不等式