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事件。
下面写一个具体的代码示例
<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).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>
<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>
转载自
http://javacrazyer.iteye.com/blog/702813
分享到:
相关推荐
标题中的“Flex使用JSON格式与Java通信”是指在开发富互联网应用程序(Rich Internet Application, RIA)时,采用Adobe Flex作为前端技术,通过JSON(JavaScript Object Notation)数据交换格式与后端Java服务器进行...
“工具”标签可能意味着文章中提到了一些辅助工具或库,用于简化Flex与Java间的通信,例如使用Apache CXF、 BlazeDS 或 GraniteDS等服务端框架,它们可以提供AMF(Action Message Format)或其他序列化协议,提高...
通过Flex,开发者可以创建美观、响应式的用户界面,并利用ActionScript与服务器进行数据通信。 Servlet是Java平台上的一个标准,用于扩展Web服务器的功能。它是一个Java类,可以处理HTTP请求并返回HTTP响应。...
Flex与Web服务的交互是开发富互联网应用(RIA)中的重要环节,主要涉及ActionScript与服务端的通信方式。ActionScript是Adobe Flash Player和Flex SDK中的编程语言,它提供了多种与Web服务交互的方法。 首先,基础...
Flex,作为Adobe开发的一种富互联网应用程序(RIA)框架,提供了强大的图形用户界面和与服务器通信的能力。本资源是“flex完全自学手册第24章 上传下载源码”,它包含了实现Flex中文件上传和下载功能的示例代码,...
Flex应用通常通过HTTP或AMF(Action Message Format)与Web服务进行通信。HTTP服务可以是基于SOAP、RESTful或者其他协议的服务,而AMF是Adobe提供的高效二进制序列化格式,用于Flex与服务器之间传输数据。 2. **...
#### 四、使用AMF与Spring MVC RESTful端点通信 **介绍**:本节介绍如何使用AMF协议与Spring MVC的RESTful服务进行交互。 **使用AmfView**: - `AmfView`用于渲染AMF格式的响应。 - 示例配置: ```java @...