2016-11-01 13 views
0

GET/POST呼び出しを実行するためのプラグインを作成しました。 ほとんどの通話は、複数の通話がある場合を除いて機能します。NSURLSession HTTPクライアントが正しい順序で要求を返さない

Xcodeでのデバッグ私は、呼び出しからのデータ(応答)は、私が期待している順序ではないことがわかります。 レスポンスの順序が正しいことを確認するにはどうすればよいですか?

エラーの例:3つの呼び出しをJSコードに入れます。私はcall01の代わりにcall02の応答を受け取ります。

参照のための私のコード: http://pastebin.com/npgNn2Jk

+0

は、最初のフィニッシュまで、2番目のをしないでください。しかし、あなたがコール1で2の応答を受け取った場合、あなたのプラグインは間違っています。起こるべきではありません。配列にリクエストを格納して、どのリクエストがどのレスポンスを返すかを確認してください。 – jcesarmobile

+0

実際にはグローバルcallbackIDを渡していました。単一の呼び出しが複数回コールされた場合、同じグローバルコールバックIDがハンドラーに渡されて、間違った応答が返されます。 – Wils

答えて

0

Ohhhhの男が、最終的には大爆笑問題を発見しました。 問題はグローバルcallbackIDだった:私はPOSTにcallbackIdを渡すために、コードを更新したら

self.callbackId = command.callbackId; 

/すべてが正常に動作し始めます。

前:

- (void)http:(CDVInvokedUrlCommand*)command { 
    self.callbackId = command.callbackId; 

    // NSURLSessionConfiguration 
    [self initializeSession:headers]; 
    if ([method isEqualToString:@"POST"]) { 
     [self doPost:url withData:data withHeaders:headers]; 
    } else { 
     [self doGet:url withQueryString:queryString]; 
    } 
} 

後:他の誰かが、問題が発生した場合には、ここで投稿

- (void)http:(CDVInvokedUrlCommand*)command { 
    self.callbackId = command.callbackId; 

    // NSURLSessionConfiguration 
    [self initializeSession:headers]; 
    if ([method isEqualToString:@"POST"]) { 
     [self doPost:url withData:data withHeaders:headers withCommandID:command.callbackId]; 
    } else { 
     [self doGet:url withQueryString:queryString withCommandID:command.callbackId]; 
    } 
} 
関連する問題