Flash/Flex学习笔记(4):如何打开网页及Get/Post数据
时间:2022-04-23
本文章向大家介绍Flash/Flex学习笔记(4):如何打开网页及Get/Post数据,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
flash终究只是客户端技术,所以很多时候还是需要与服务端技术(比如asp,asp.net,jsp,php之类)进行数据交互的,下面的代码演示了如何在flash中打开网页,以及用GET/POST二种方式向服务端发送数据
//按下按钮,打开网页
btnOpen.addEventListener(MouseEvent.CLICK,
function(){
navigateToURL(new URLRequest("http://www.g.cn/search?hl=zh-CN&q=" + encodeURIComponent(txtId.text)),"_blank");
});
//以Get方式发送数据(发送就完事,不会理会服务端是否响应)
btnSend.addEventListener(MouseEvent.CLICK,
function(){
sendToURL(new URLRequest("/default.aspx?q=" + encodeURIComponent(txtId.text)));
});
btnPost.addEventListener(MouseEvent.CLICK,fnPostData);
//以Post方式发送数据(同样:发送就完事,不会理会服务端是否响应)
function fnPostData(e:MouseEvent) {
var _urlReq:URLRequest = new URLRequest();
_urlReq.url = "/default.aspx";
_urlReq.method = URLRequestMethod.POST;
var _data:URLVariables = new URLVariables();
_data.q = "菩提树下的杨过"; //即传递 q = 菩提树下的杨过,注:经测试,Flash会自动对传递的数据做encodeURIComponent处理,所以此外不能再加encodeURIComponent,否则就是二次编码了
_urlReq.data = _data;
sendToURL(_urlReq);
}
服务端可以这样处理:
protected void Page_Load(object sender, EventArgs e)
{
string q = Request["q"];
if (!string.IsNullOrEmpty(q)) {
string _file = Server.MapPath("~/log.txt");
File.AppendAllText(_file,q + "t" + Request.HttpMethod + "t" + DateTime.Now + Environment.NewLine);
}
}
如果发送了数据后,还要响应服务端的结果(比如取得服务端的返回值,再继续到Flash中处理),Flash中可这样写:
var loader:URLLoader = new URLLoader();
configureListeners(loader);
var request:URLRequest=new URLRequest("/FlashHander.ashx?q=" + encodeURIComponent("菩提树下的杨过"));
try {
loader.load(request);
} catch (error:Error) {
trace("Unable to load requested document.");
}
//定义各种情况的回调函数
function configureListeners(dispatcher:IEventDispatcher):void {
dispatcher.addEventListener(Event.COMPLETE, completeHandler);
dispatcher.addEventListener(Event.OPEN, openHandler);
dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
}
//加载完成时,将触发
function completeHandler(event:Event):void {
var loader:URLLoader=URLLoader(event.target);
trace("completeHandler: " + loader.data);
lblReceive.text = loader.data; //本例中,服务端返回: msg=Hello World&Method=GET&q=菩提树下的杨过
var vars:URLVariables=new URLVariables(loader.data);
trace("The Method is " + vars.Method); //服务端返回的字符串中如果有 Method=xxx 这样的字符,则Flash中可以直接用vars.Method进行访问
}
//刚开始请求时,将触发
function openHandler(event:Event):void {
trace("openHandler: " + event);
}
//下载进度发生变化时,将触发(可利用这个做加载进度条)
function progressHandler(event:ProgressEvent):void {
trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal);
}
//因安全原因出现错误时,将触发
function securityErrorHandler(event:SecurityErrorEvent):void {
trace("securityErrorHandler: " + event);
}
//http请求状态变化时,将触发
function httpStatusHandler(event:HTTPStatusEvent):void {
trace("httpStatusHandler: " + event);
}
//io错误时,将触发
function ioErrorHandler(event:IOErrorEvent):void {
trace("ioErrorHandler: " + event);
}
服务端FlashHander.ashx可以这样处理:
注意:返回的字符串格式为 name1=value1&name2=value2&name3=value3... 如果name和value中本身包含"="与"&",请注意用其它字符替换掉
///
/// Summary description for FlashHander
///
public class FlashHander : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Response.Write("msg=Hello World&Method=" + context.Request.HttpMethod + "&q=" + context.Request["q"]);
}
public bool IsReusable
{
get
{
return false;
}
}
}
- 自定义View简单使用
- 正确姿势:如何调戏蹭网者
- 当我们讨论流畅度的时候,我们究竟在说什么?
- ImageButton和ZoomButton使用大全
- Android 插件化突破应用市场无法上广告的问题
- ImageView的属性和方法大全
- sharedpreferences如何保存对象
- Android:全面解析熟悉而陌生 的 Application 类使用
- ToggleButton和Switch使用大全
- Android 无需权限显示悬浮窗, 兼谈逆向分析 App
- android数据保存之greendao
- CheckBox和RadioButton使用大全
- 关于 Android 实现滑动返回的几种方法总结
- android 面试之listview
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python基于yaml文件配置logging日志过程解析
- Python ckeditor富文本编辑器代码实例解析
- PHP自定义错误处理的方法分析
- PHP聊天室简单实现方法详解
- phpStorm+XDebug+chrome 配置详解
- PHP面向对象程序设计之多态性的应用示例
- PHP设计模式之单例模式定义与用法分析
- PHP面向对象程序设计之接口的继承定义与用法详解
- PHP简单验证码功能机制实例详解
- php高清晰度无损图片压缩功能的实现代码
- Python自省及反射原理实例详解
- 浅谈django框架集成swagger以及自定义参数问题
- keras CNN卷积核可视化,热度图教程
- 解决tensorflow读取本地MNITS_data失败的原因
- 浅谈keras中Dropout在预测过程中是否仍要起作用