1

iOS アプリに AFNetworking を使用しています。

ドキュメントの指示に従って AFHTTPClient のサブクラスを作成しました。これにより、すべての GET および POST リクエストが作成されます。

私のViewControllerは、これらのリクエストからのペイロードだけでなく、エラーメッセージも受け取ります。AFHTTPClient サブクラスが 401 ステータス コードを受け取るとすぐにログイン画面をポップアップするにはどうすればよいですか? 私が行うすべての単一のリクエストに対してこの動作が必要になるため、401 がビューコントローラーにバブルアップするプロセスの後半に showLoginScreen() を記述するのではなく、AFHTTPClient のすぐ内側から loginscreen を表示したいと思います。アプリで 5 レベルの深さまでドリルダウンしています。

これは可能ですか、それとも悪い考えですか?各viewControllerでコードを複製せずに、すべてのリクエストに対してログイン画面を自動的にポップアップするにはどうすればよいですか?

AFHTTPClient サブクラスのメソッドをオーバーライドしたいのですが、それを行う正しい場所がわかりません。私の最初の候補は AFHTTPClient 内のこれです:

 - (void)getPath:(NSString *)path
         parameters:(NSDictionary *)parameters
            success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
            failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure
    {
        NSURLRequest *request = [self requestWithMethod:@"GET" path:path parameters:parameters];
        AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:success failure:failure];
        [self enqueueHTTPRequestOperation:operation];
    }

「showLoginScreen()」メソッドを挿入する場所を誰か指摘できますか?

4

3 に答える 3

1

1つの解決策は、401が発生するたびにAFHTTPClient subclass投稿し、おそらくログイン画面を聞いて提示することです...NSNotificationAppDelegate

于 2013-09-05T08:14:10.197 に答える