2016-10-21 4 views
1

Ich verwende die neue afnetworking 3.0-Bibliothek, um eine Netzwerkanforderung für die Anmeldung mit dem AFTHTPSessionmanager zu erstellen. Also, wenn ich einen POST-Anruf und in der Antwort, wenn ich 401 bekomme, gibt es eine andere Netzwerkanforderung, die im Hintergrund aufgerufen wird.AFNetworking AFTHTPSessionManager POST zweimal aufgerufen

Wie kann ich das vermeiden, indem ich den Dienst nicht erneut beim Fehlerrückruf aufruft?

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

Antwort

1

Diese zweite Anforderung wird angezeigt, wenn Sie eine Authentifizierungsanforderung erhalten.

Sie können, wenn Sie wollen, einfach die Genehmigung Herausforderung ablehnen, die die zweite Anforderung stoppt:

:

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

Oder, wenn Sie im Voraus und authentifizieren gehen wollen, könnten Sie so etwas wie tun

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

Alles hängt davon ab, wie Sie Benutzer auf Ihrem Webdienst authentifizieren.

+0

Rob du bist der Retter ... Vielen Dank ... Ich gab NSURLSessionAuthChallengeUseCredential zurück, die stillschweigend eine weitere Anfrage machte .... aber nach dem Wechsel zur Zeilenrückgabe NSURLSessionAuthChallengeCancelAuthenticationChallenge funktionierte es großartig .... – lifemoveson