我正在使用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程序逻辑,甚至切换库来解决这个问题?
答案 0 :(得分:0)
我找不到问题的根源所以我只是解决了这个问题。我通过一个函数运行整个响应体,该函数将它分割在"]["
上,添加缺少的括号,然后将每个片段推送到以下响应处理机制。