Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
FlashAS2相当于URLRequest/URLLoader,因此我可以发布JSON_Flash_Json_Actionscript 2 - Fatal编程技术网

FlashAS2相当于URLRequest/URLLoader,因此我可以发布JSON

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:

全部,

我正在从事一个使用和发送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的服务不允许这样做

因此,我正在寻找以下任一解决方案:

  • 一种使用LoadVars.sendAndLoad()的方法 不将数据作为 名称/值对(即数据 (应该是该职位的主体)
  • 阻止XML.sendAndLoad()的一种方法 从编码数据到HTML 实体(例如,
  • 从Flash发布数据的另一种方法 指向URL
  • 不管它值多少钱,AS3都能很好地处理这个问题。下面是一个简单的例子:

    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了。