2016-10-21 1 views
1

新しいafnetworking 3.0ライブラリを使用して、AFHTTPSessionmanagerを使用してログインするようにネットワーク要求を行っています。だから、私がPOSTコールをしたときに応答が401になると、別のネットワーク要求が黙って呼び出されます。AFNetworking AFHTTPSessionManager POSTが2回呼び出されました

エラーコールバックでサービスを再度呼び出さないようにするにはどうしたらいいですか?

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

答えて

1

認証チャレンジを受信して​​いる場合は、2番目のリクエストが表示されます。

したい場合は、単に第2の要求を停止し、認可挑戦、拒否することができます:

:あなたが先に行くと認証したい場合は、あなたのような何かを行うことができ、

[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; 
}]; 

すべては、Webサービス上のユーザーの認証方法によって異なります。

+0

Robあなたは救い主です...ありがとうございました...私は静かに別の要求をしていたNSURLSessionAuthChallengeUseCredentialを返していました....しかし、NSURLSessionAuthChallengeCancelAuthenticationChallengeを返すと、それは素晴らしい仕事をしました。 – lifemoveson

関連する問題