随着Flash Player 9的普及,AS3编程也越来越多了,所以这次重新整理AS3下几种与后台数据交换方法。
1.URLLoader(URLStream)
2.FlashRemoting
3.XMLSocket(Socket)
4.FMS/FCS
一、URLLoader(URLStream)篇
URLStream和URLLoader中URLLoaderDataFormat.BINARY类似,它提供对下载 URL 的低级访问方式,我在此不再重复了,有兴趣的,可以看Flash帮助中URLStream类。
Flash端
复制内容到剪贴板代码:
/**
* @author Kinglong
* @link http://www.klstudio.com
* @mail kinglong@gmail.com
* @version 0.1
*/
package project.test {
import flash.display.*;
import flash.events.*;
import flash.net.*;
public class TestURLLoader extends Sprite {
private var _loader:URLLoader;
public function TestURLLoader() {
//创建URLLoader对象;
_loader = new URLLoader();
//设置接收数据方式(文本、原始二进制数据、URL 编码变量);
_loader.dataFormat = URLLoaderDataFormat.VARIABLES;
//设置事件侦听器
configureListeners(_loader);
//设置传递参数;
var params:URLVariables = new URLVariables();
params.username = "kinglong";
params.password = "king";
//建立Request访问对象;
var request:URLRequest = new URLRequest("http://www.klstudio.com/none.jsp");
//设置参数;
request.data = params;
//设置访问模式(POST,GET);
request.method = URLRequestMethod.POST;
try {
loader.load(request);
} catch (error:Error) {
trace(error);
}
}
private function configureListeners(dispatcher:IEventDispatcher):void {
//加载完成事件;
dispatcher.addEventListener(Event.COMPLETE, loaderHandler);
//开始访问事件;
dispatcher.addEventListener(Event.OPEN, loaderHandler);
//加载进度事件;
dispatcher.addEventListener(ProgressEvent.PROGRESS, loaderHandler);
//跨域访问安全策略事件;
dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, loaderHandler);
//Http状态事件;
dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, loaderHandler);
//访问出错事件;
dispatcher.addEventListener(IOErrorEvent.IO_ERROR, loaderHandler);
}
private function loaderHandler(event:*):void {
switch(event.type) {
case Event.COMPLETE:
trace(_loader.data.result);
break;
case Event.OPEN:
trace("open: " + event);
break;
case ProgressEvent.PROGRESS:
trace("progress: " + event);
break;
case SecurityErrorEvent.SECURITY_ERROR:
trace("securityError: " + event);
break;
case HTTPStatusEvent.HTTP_STATUS:
trace("httpStatus: " + event);
break;
case IOErrorEvent.IO_ERROR:
trace("ioError: " + event);
break;
}
}
}
}
服务端(jsp)
复制内容到剪贴板代码:
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<%
String username = request.getParameter("username");
String password = request.getParameter("password");
boolean result = false;
//访问数据...;
out.println("result="+result+"&_");
%>
优点:
1、flash代码实现起来简单,方便。
2、服务端接收页面和接收一个表单过来的数据一样处理,不需要专门的技术,所有服务端程序都可以实现!
3、可以发送字符串变量,也可以发送文件流([AS3]URLLoader+URLRequest+JPGEncoder实现BitmapData图片数据保存)。
4、可以结合AMF3接收更为丰富的数据类型([AS3]AMF3+JAVA的调用范例)。
缺点:
1、传递的变量不宜过多。
2、变量传递的值不宜过长。
注意:
如果接收数据类型设置成URLLoaderDataFormat.VARIABLES后,第一个字符不能以&开头,结尾部分建议以&_为结束比较好。
标签:科技 电子 3G

