REST调用的响应在as3httpclient Flash库中混合在一起

时间:2012-07-02 13:44:20

标签: flash rest flex4

我正在使用gabriel's as3httpclient来调用Flex 4.5应用程序中的RESTful JSON API。它似乎工作得很好,但现在我遇到了一个我目前不知道如何修复的问题。我正在使用lib的HTTPDataListener而不是普通的HTTPListener

有一次我直接发送3个请求(让我们称之为A_GET,B_GET和C_GET)。正确处理对第一个请求的响应,但是以下两个请求的响应被混合在一起:

onData(A_GET)
onDataComplete(A_GET)
onComplete(A_GET)    // so far everything's fine and working as expected
onData(B_GET)
onData(C_GET)
onDataComplete(B_GET+C_GET)    // <-- here be dragons!
onComplete(B_GET)
onComplete(C_GET)

问题在于,在通过onData()并且在点击onDataComplete()之前/之后,来自对B_GET和C_GET的响应的JSON数据被连接起来。这就是代替

的原因
[{ /* GET RESPONSE */ }]

我得到像

这样的东西
[{ /* B_GET RESPONSE */ }][{ /* C_GET RESPONSE */ }]

这显然使Flash的本机JSON解析器阻塞(导致SyntaxError: Error #1132: Invalid JSON parse input.运行时错误),而且我也只输入一次onDataComplete()处理程序而不是每次请求一次,这严重影响了我的程序流程

任何人都可以给我一个指针,指出这里的反应是什么以及为什么这些反应被合并为一个?我只是错过了重要的事情吗?是否有一个[简单]的解决方法,不需要我重构一半我的RESTful程序逻辑,甚至切换库来解决这个问题?

1 个答案:

答案 0 :(得分:0)

我找不到问题的根源所以我只是解决了这个问题。我通过一个函数运行整个响应体,该函数将它分割在"]["上,添加缺少的括号,然后将每个片段推送到以下响应处理机制。