所有
我正在开发一个消耗和发送JSON的Flash AS2项目。
我正在使用http://json.org/json.as来接收和解析JSON - 它运行得很好。
这就是麻烦 - 其中一个要求是应用程序POST JSON到Web服务。
在之前的项目中,我使用了LoadVars.sendAndLoad(),效果很好。
问题在于,使用loadVars,您正在发送名称/值对。但是,我在此项目中发送JSON的特定服务要求 JSON必须是POST的主体。也就是说,不是名称/值对。
除非我弄错了,否则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主体中发送它的数据。 (是的,我知道这很难看 - 'new XML(jsonString)'不能生成有效的XML对象。但是......它有效。)
但是,我遇到的障碍是Flash发布的数据被编码 - 引号被替换为“"
”。在某些情况下,这样会很好,但我发送JSON的服务不允许这样做。
所以,我正在寻找以下任何解决方案:
"
)对于它的价值,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不是一个选项。
非常感谢任何建议或建议!
答案 0 :(得分:1)
您是否考虑过使用中间脚本作为代理?我的意思是一个接收名称=值对的网址,然后将值发布到主网址并返回结果?
答案 1 :(得分:1)
我唯一能想到的是MovieClip.loadVariables
,但会更改%20
的引号。据我所知,之后您唯一真正的选择是使用ExternalInterface通过JS传递所有内容或使用LocalConnections将数据发送到AS3 swf。 (两者都同样可怕)。