FlashAS2相当于URLRequest/URLLoader,因此我可以发布JSON
全部, 我正在从事一个使用和发送JSON的FlashAS2项目 我用它来接收和解析JSON——它工作得很好 问题是——其中一个要求是应用程序将JSON发布到web服务 在以前的项目中,我使用了LoadVars.sendAndLoad(),效果很好 问题是,使用loadVars时,您发送的是名称/值对。然而,我在这个项目中发送JSON的特定服务要求JSON必须是文章的主体。也就是说,不是名称/值对 除非我弄错了,否则LoadVars不会让你这么做的 因此,我尝试使用XML.sendAndLoad:FlashAS2相当于URLRequest/URLLoader,因此我可以发布JSON,flash,json,actionscript-2,Flash,Json,Actionscript 2,全部, 我正在从事一个使用和发送JSON的FlashAS2项目 我用它来接收和解析JSON——它工作得很好 问题是——其中一个要求是应用程序将JSON发布到web服务 在以前的项目中,我使用了LoadVars.sendAndLoad(),效果很好 问题是,使用loadVars时,您发送的是名称/值对。然而,我在这个项目中发送JSON的特定服务要求JSON必须是文章的主体。也就是说,不是名称/值对 除非我弄错了,否则LoadVars不会让你这么做的 因此,我尝试使用XML.sendAndLoad:
dataAsString = JSON.stringify(json);
var send_xml:XML = new XML(dataAsString);
var response_xml:XML = new XML()
response_xml.onData = function(rawResponseData) {
trace (rawResponseData);
}
send_xml.sendAndLoad([url], response_xml, "POST");
。。。因为XML.sendAndLoad()在POST正文中发送其数据。(是的,我知道这很难看——‘新XML(jsonString)’无法生成有效的XML对象。但是……它可以工作。)
然而,我在这里遇到的障碍是Flash发布的数据被编码了-引号被替换为“”
”。在某些情况下,这是可以的,但我发送JSON的服务不允许这样做
因此,我正在寻找以下任一解决方案:
“
)import com.adobe.serialization.json.*;
// requires the as3corelib from https://github.com/mikechambers/as3corelib
var request:URLRequest = new URLRequest("[the service URL]");
request.method = URLRequestMethod.POST;
request.contentType = 'application/json';
var jsonData:Object = {[application-specific data]};
request.data = JSON.encode(jsonData);
var loader:URLLoader = new URLLoader();
loader.load(request);
然而,应用程序的其余部分依赖于大量的遗留AS2代码,因此不幸的是,AS3不是一个选项
非常感谢您的建议 您是否考虑过使用中间脚本作为代理?我指的是一个url,它接收name=value对,然后将值发布到主url并返回结果?我唯一能想到的是
MovieClip.loadVariables
,但这会将引号更改为%20
。据我所知,在这之后,您唯一的实际选择是使用ExternalInterface通过JS传递所有信息,或者使用LocalConnections将数据发送到AS3 swf。(两者都同样可怕)。约翰,谢谢你的建议。我已经——具体地说,我正在考虑在HTML页面中使用一个JavaScript函数来包装Flash SWF。SWF将json(作为字符串)传递给该函数;该功能可以将数据发布到服务。像这样的事情应该行得通;我只是希望减少依赖项/中介,因为这可能会影响性能。不过,这仍然是一个很好的建议,也是我最后的选择。我个人想不出一个更优雅的解决方案,不是没有,而是我已经好几年没有使用AS2了。