2

プロジェクトで AFNetworking を使用しているときに問題が発生しました。どれどれ:

NSOperationQueue* queue = [[NSOperationQueue alloc] init];

AFJSONRequestOperation* op1 = [self operationSyncLeagues]; //URL=http://pm[dot]mvdigital[dot]vn/sandbox/zozo/smartphone.php?lastsynced=1340362261&task=league.listall_syncable&session_id=1946a6504e90f80cb3bd21fb90b0be85

AFJSONRequestOperation* op2 =[self operationSyncMatches]; // URL = http://pm[dot]mvdigital[dot]vn/sandbox/zozo/smartphone.php?pagesize=10&session_id=1946a6504e90f80cb3bd21fb90b0be85&page=1&league_id=51&lastsynced=1340362314&task=match.schedule_syncable

[queue setMaxConcurrentOperationCount:4];
[queue addOperations:[NSArray arrayWithObjects: op1, op2, nil] waitUntilFinished:NO];

それでは、ログを見てみましょう (デバッグのために AFURLConnectionOperation.m に NSLog をいくつか入れました)。

2 つの操作が同時に開始されます。大丈夫!

2012-06-26 00:28:21.688 zozo[11726:18d03] * [開始] URL: http://pm[dot]mvdigital[dot]vn/sandbox/zozo/smartphone.php?lastsynced=1340362261&task=league. listall_syncable&session_id=1946a6504e90f80cb3bd21fb90b0be85

2012-06-26 00:28:21.689 zozo[11726:18d03] * [開始] URL: http://pm[dot]mvdigital[dot]vn/sandbox/zozo/smartphone.php?pagesize=10&session_id=1946a6504e90f80cb3bd21fb90b0be85&page= 1&league_id=51&lastsynced=1340362314&task=match.schedule_syncable

リダイレクトはありませんが、なぜ willSendRequest を起動するのですか? 詳細については、API の URL を確認できます

2012-06-26 00:28:21.689 zozo[11726:18d03] willSendRequest [redirectResponse の説明]:(null) 2012-06-26 00:28:21.690 zozo[11726:18d03] willSendRequest [redirectResponse の説明]:(null)

2012-06-26 00:28:21.913 zozo[11726:18d03] * [90 バイト] URL: http://pm[dot]mvdigital[dot]vn/sandbox/zozo/smartphone.php?lastsynced=1340362261&task=league .listall_syncable&session_id=1946a6504e90f80cb3bd21fb90b0be85

2012-06-26 00:28:21.913 zozo[11726:18d03] * [終了] URL: http://pm[dot]mvdigital[dot]vn/sandbox/zozo/smartphone.php?lastsynced=1340362261&task=league. listall_syncable&session_id=1946a6504e90f80cb3bd21fb90b0be85

2012-06-26 00:28:21 .914 zozo[11726:15203] 同期リーグ成功

操作 1 は終了しましたが、操作 2 は 5 秒後にデータの取得を開始します。なぜ?

2012-06-26 00:28:26 .421 zozo[11726:18d03] * [92 バイト] URL: http://pm[dot]mvdigital[dot]vn/sandbox/zozo/smartphone.php?pagesize=10&session_id =1946a6504e90f80cb3bd21fb90b0be85&page=1&league_id=51&lastsynced=1340362314&task=match.schedule_syncable

2012-06-26 00:28:26.422 zozo[11726:18d03] * [終了] URL: http://pm[dot]mvdigital[dot]vn/sandbox/zozo/smartphone.php?pagesize=10&session_id=1946a6504e90f80cb3bd21fb90b0be85&page= 1&league_id=51&lastsynced=1340362314&task=match.schedule_syncable

2012-06-26 00:28:26.423 zozo[11726:15203] 同期が成功しました

AFNetworking のドキュメントから: 「別のオプションは、AFNetworking のすべての要求操作と同様に、AFJSONRequestOperation が NSOperation のサブクラスであるという事実を利用することです。NSOperationQueue と組み合わせて、複数の要求を簡単に同時に実行できます (ネットワークが停滞しないように、同時に実行する操作の最大数を設定する機能)。」

<== それで、ここで何が問題なのですか? 2 つのリクエスト (それぞれ 92 バイト) を取得しましたが、それらを同時に実行することはできません。ここにバグはありますか?

p/s: sharedclient を使用して AFHTTPClient を試してみましたが、うまくいきませんでした。私のサーバーは問題なく、Android クライアントに問題はありません。同じ問題が発生した人はいますか? 同時リクエスト数に制限はありますか?

http://pm[ドット]mvdigital[ドット]vn/ <== http://pm.mvdigital.vn/

ありがとう。

編集:

私は自分で答えを見つけました。ここをクリックしてください: http://github.com/AFNetworking/AFNetworking/issues/387

4

0 に答える 0