2016-10-21 5 views
1

AFHTTPSessionmanager를 사용하여 로그인하라는 네트워크 요청에 새 afnetworking 3.0 라이브러리를 사용하고 있습니다. 따라서 POST 호출을하고 401을 받으면 응답으로 다른 네트워크 요청이 자동으로 호출됩니다.AFNetworking AFHTTPSessionManager POST를 두 번 호출했습니다.

오류 콜백에서 다시 서비스를 호출하지 않아도 어떻게 피할 수 있습니까?

[manager POST:[[urlReq URL] absoluteString] parameters:nil progress:nil success:^(NSURLSessionTask *operation, id responseObject) 

답변

1

인증 요청을받은 경우 두 번째 요청이 표시됩니다.

당신이 원하는 경우, 단순히 두 번째 요청을 중지 승인 도전, 거부 할 수 있습니다

:

: 당신은 같은 것을 할 수있는 당신이 가서 인증하려는 경우,

[manager setTaskDidReceiveAuthenticationChallengeBlock:^NSURLSessionAuthChallengeDisposition(NSURLSession * _Nonnull session, NSURLSessionTask * _Nonnull task, NSURLAuthenticationChallenge * _Nonnull challenge, NSURLCredential *__autoreleasing _Nullable * _Nullable credential) { 
    return NSURLSessionAuthChallengeCancelAuthenticationChallenge; 
}]; 

을 또는을,

[manager setTaskDidReceiveAuthenticationChallengeBlock:^NSURLSessionAuthChallengeDisposition(NSURLSession * _Nonnull session, NSURLSessionTask * _Nonnull task, NSURLAuthenticationChallenge * _Nonnull challenge, NSURLCredential *__autoreleasing _Nullable * _Nullable credential) { 
    if (challenge.previousFailureCount == 0) { 
     *credential = [NSURLCredential credentialWithUser:self.user password:self.password persistence:NSURLCredentialPersistenceForSession]; 
     return NSURLSessionAuthChallengeUseCredential; 
    } 

    return NSURLSessionAuthChallengeCancelAuthenticationChallenge; 
}]; 

모두 웹 서비스에서 사용자를 인증하는 방법에 따라 다릅니다.

+0

롭 당신은 구세주입니다 ... 고마워요 ... 나는 조용히 .... 또 다른 요청을하고 있던 NSURLSessionAuthChallengeUseCredential을 되 돌리는 중이었습니다.하지만 줄을 바꾸면 NSURLSessionAuthChallengeCancelAuthenticationChallenge가 돌아 왔습니다. – lifemoveson