0

Flex 4.5 アプリケーションで RESTful JSON API を呼び出すために、gabriel の as3httpclientを使用しています。かなりうまくいっているように見えましたが、現在、修正方法がわからない問題に遭遇しました。HTTPDataListener通常の .lib の代わりにlib を使用していますHTTPListener

ある時点で、3 つのリクエストを直接続けて送信しています (A_GET、B_GET、および C_GET と呼びましょう)。最初のリクエストへのレスポンスは適切に処理されますが、次の 2 つのリクエストのレスポンスは一緒に処理されます。

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()ハンドラーを要求ごとに 1 回ではなく 1 回しか入力しないため、プログラム フローが大幅に混乱します。

ここで何が起こっているのか、なぜ応答が1つにまとめられているのか、誰か教えてもらえますか? 重要な何かを見逃しているだけですか?問題を解決するために、RESTful プログラム ロジックの半分をリファクタリングしたり、ライブラリを切り替えたりする必要のない [簡単な] 回避策はありますか?

4

1 に答える 1

0

問題の原因を見つけることができなかったので、それを回避しました。"]["で分割し、不足している括弧を追加してから、各フラグメントを次の応答処理メカニズムにプッシュする関数を介して、応答本文全体を実行しました。

于 2012-09-10T15:42:17.987 に答える