2

我在 iOS 上使用 AFNetworking 并尝试访问给我 302 状态代码的网页,重定向我,然后在重定向页面加载时返回 200。

但是,我无法在我的 iOS 应用程序中捕捉到这一点。我尝试添加 authenticationChallenge 块,但它没有被调用。completionBlock 正在获取重定向视图,但状态代码仅为 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 回答