7

私は最近、AFNetworking (マスター ブランチの最新バージョン) を使用するコードが iOS 6 で正しく動作しなくなったことに気付きました。私のコードは次のとおりです。

httpClient = [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:baseURL]];
httpClient.operationQueue.maxConcurrentOperationCount = 1;

httpClientクラス変数です。

次に、リクエストを作成しています。

NSMutableURLRequest *signInRequest = [httpClient requestWithMethod:@"POST" path:@"/user/register" parameters:dataToSend];
signInRequest.timeoutInterval = 15.0;
signInRequest.cachePolicy = NSURLRequestReloadIgnoringLocalAndRemoteCacheData;

AFJSONRequestOperation *signInOperation = [AFJSONRequestOperation JSONRequestOperationWithRequest:signInRequest success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON)
{
    // Blah
}
    failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON)
{
    // Blah
}];

[httpClient enqueueHTTPRequestOperation:signInOperation];

他のすべてのリクエストも同様に作成されます。キューに入れられた最初の操作はうまく機能し、成功ハンドラー ブロックに入ることができます。request timeoutただし、他のリクエストへの次の呼び出しは、選択したタイムアウト値に関係なく、失敗ハンドラーとエラーで終了します。

私はplainを使って同じ呼び出しを行いNSURLConnection、大量のコードを書きました:)、成功すると、リクエストは適切に処理されました。

iOS 5 デバイスに切り替えましたが、上記のコードは正常に動作します。

3G 接続 (iOS 6) に切り替えたところ、上記のコードが機能しました。

WiFi接続でのみこの問題が発生しているようです(RESTサーバーと同じサブネットにいる場合を除く)。

これについて何か考えはありますか?

前もって感謝します。

4

1 に答える 1

2

AFNetworking の github にも問題を投稿し、自分で解決策を見つけたようです :)!

iOS 6 では、TCP の実装か何かが変更されているようです。サーバーをサードパーティのホスティングに移動しましたが、現在は機能しています。

今後の読者のために、問題はここで見つけることができます。

于 2013-02-11T20:32:07.640 に答える