将Flex URLRequest重新编码并把NavigationToURL表单仿真重新编码为Royale JS

问题描述

我有一堆Flex页面,我需要转换这些页面以摆脱Flash Player,并且无法看到仅使用javascript复制此代码的方法。

Flex代码收集数据并将其通过POST发送到另一个框架(名为FrameData)中的Cold Fusion页面。 Cold Fusion从FORM变量(FORM.mydata1,FORM.mydata2等)访问数据。

var RequestSite:URLRequest;

OutputPageValues.OutputType = 5;
OutputPageValues.mydata1 = "2";
OutputPageValues.mydata2 = "test";

RequestSite = new URLRequest("pageurl.cfm"));
RequestSite.data = OutputPageValues;
RequestSite.method = URLRequestMethod.POST;

navigateToURL(RequestSite,'FrameData');

如何在Royale中模拟此构造?还有另一种方法吗?

解决方法

URLRequest的等效代码:

var u:URLRequest = new URLRequest("http://domain.foo");
navigateToURL(u,"_blank");

在Apache Royale中是BrowserWindow

import org.apache.royale.core.BrowserWindow;

var u:String = "http://domain.foo";
BrowserWindow.open(u,"_blank");

要传递变量,您需要通过GET方法:"http://domain.foo?variable=" + key

要使用POST方法,请改用HTTPService SWC中的Network类:

import org.apache.royale.net.HTTPConstants;
import org.apache.royale.net.HTTPService;
import org.apache.royale.net.URLVariables;

// add the variables to send
var urlVars:URLVariables = new URLVariables();
urlVars.set("variable",key);

// create the httpservice instance
var service:HTTPService = new HTTPService();
service.url = "http://domain.foo";
service.method = HTTPConstants.POST;
service.addEventListener("complete",resultCallback);
service.addEventListener("ioError",faultCallback);

// add the variables
service.contentData = urlVars;

// trigger the service
service.send();

如果需要处理CORS,可以选择将CORSCredentialsBead珠添加到HTTPService中:

service.addBead(new CORSCredentialsBead(true));

(注意:代码未经测试,请报告是否还可以,以便我们改善此响应和代码段,谢谢)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...