3

私はかなり基本的にRestKitを使用しており、リクエストRKClientを行っています。get私のシステムは、ユーザー名/パスワード/アカウントを使用してユーザーを認証します。ユーザー名/パスワードは単なる httpbasic であり、アカウントは単なるサブドメインです。

私が抱えている問題は、次のことを行う場合です。

  1. 正しい情報でサインインします (その後、アプリのすべてのデータをダウンロードします)
  2. データをリセットします (これにより、すべてのコア データ オブジェクトが削除され、共有 RKClient のユーザー名とパスワードも空白に設定されます)
  3. 間違ったユーザー名/パスワードを入力して、正しいアカウントを入力すると、すべて正しいかのようにデータがダウンロードされます。

ユーザー名とパスワードを設定する前後に puts を配置すると、正しくないデータに変更されていることがわかります。そして、キャッシングをRKRequestCachePolicyNone(共有クライアントと RKRequest インスタンスの両方で) に設定しました。

返されたリクエストは、キャッシュからプルされていないことを示しています。そして、カールを使用して端末で問題を再現しようとすると、正しい応答が得られます(間違ったユーザー名パスワードではデータを取得できないということです)。

では、なぜ/どのようにしてRestKitが適切な応答を返すのでしょうか? サーバーにヒットし、200 応答が返されます。

コード例:

- (void)startDownload {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    NSLog(@"username and password before (%@,%@)",[RKClient sharedClient].username,[RKClient sharedClient].password);
    [RKClient sharedClient].username = self.login;
    [RKClient sharedClient].password = self.password;

    NSLog(@"username and password after (%@,%@)",[RKClient sharedClient].username,[RKClient sharedClient].password);

    NSString *base = [NSString stringWithFormat:@"http://%@.%@api",self.accountName,[defaults stringForKey:@"myURL"]];

    [[RKClient sharedClient] setBaseURL:base];
    [[RKClient sharedClient] setAuthenticationType:RKRequestAuthenticationTypeHTTPBasic];

    [[RKClient sharedClient] setCachePolicy:RKRequestCachePolicyNone];

    RKRequest *request = [[RKClient sharedClient] get:@"/verify.json" delegate:self];

    [request setCachePolicy:RKRequestCachePolicyNone];
}

アップデート

また、最初のログイン時に間違ったパスワードを入力すると、失敗として返されることにも気付きました。その後、パスワードを修正すると、その後は常に失敗します。

4

1 に答える 1