0

我正在使用gabriel 的 as3httpclient来调用 Flex 4.5 应用程序中的 RESTful JSON API。它似乎工作得很好,但现在我遇到了一个我目前不知道如何解决的问题。我使用的是 libHTTPDataListener而不是普通的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)

问题在于,来自对 B_GET 和 C_GET 的响应的 JSON 数据以某种方式在运行之后/运行时onData()和点击之前连接起来onDataComplete()。这就是原因,而不是

[{ /* GET RESPONSE */ }]

我得到类似的东西

[{ /* B_GET RESPONSE */ }][{ /* C_GET RESPONSE */ }]

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

谁能给我指点一下这里发生了什么以及为什么将响应合并为一个?我只是错过了一些重要的事情吗?是否有一个 [easy] 解决方法不需要我重构一半的 RESTful 程序逻辑,甚至不需要切换库来解决这个问题?

4

1 回答 1

0

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

于 2012-09-10T15:42:17.987 回答