2

iOS で AFNetworking を使用していて、302 ステータス コードを返し、リダイレクトされたページが読み込まれると 200 が返される Web ページにアクセスしようとしています。

ただし、iOS アプリでこれをキャプチャすることはできません。authenticationChallenge ブロックを追加しようとしましたが、呼び出されません。完了ブロックはリダイレクトされたビューを取得していますが、ステータス コードは 200 のみです。ここで何が欠けていますか?302 コードを受け取ったら、ログインの詳細を送信する必要があります。私のコードは以下に貼り付けられます:

  AFHTTPRequestOperation *uploadOperation = [[AFHTTPRequestOperation alloc] initWithRequest:myRequest];
[uploadOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id response) {
    NSLog(@"Request: %@", [operation.request description]);
    NSLog(@"CODE: %i",operation.response.statusCode);
    NSLog(@"Response: %@", [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding]);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    self.statusLabel.text = @"upload failed";
}];    

[uploadOperation setAuthenticationChallengeBlock:^(NSURLConnection *connection, NSURLAuthenticationChallenge *challenge) {
    NSLog(@"pls authenticate");
}];
4

1 に答える 1

3

とった。間違ったブロックを設定していました。@login_required デコレーターの場合、認証チャレンジは Django アプリが送信するものではありません。設定する必要があるのは、redirectResponse です。

[uploadOperation setRedirectResponseBlock:^NSURLRequest *(NSURLConnection *connection, NSURLRequest *request, NSURLResponse *redirectResponse) {
    NSLog(@"pls authenticate");
    return request;
}];
于 2013-04-05T19:21:19.543 に答える