状况
AFHTTPRequestOperation *requestOperation = [MyHTTPClient.sharedClient HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation *operation, id responseObject) {
processSuccessBlock(operation, responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
processFailureBlock(operation, error);
if (operation.response.statusCode == 401)
[MyHTTPClient.sharedClient refreshTokenAndRetryOperation:operation success:processSuccessBlock failure:processFailureBlock];
}];
问题
我尝试过的内容
cancelAuthenticationChallenge:
对willSendRequestForAuthenticationChallenge:
进行响应正在中止第二个调用,但它给出的错误代码为-1012(NSURLErrorUserCancelledAuthentication)而不是401,并掩盖了真实的响应如何禁用身份验证质询响应机制,以便获得服务器响应而无需调用两次?
最佳答案
您可以使用一些选项来完全自定义身份验证处理:
setWillSendRequestForAuthenticationChallengeBlock:
类中的setAuthenticationAgainstProtectionSpaceBlock:
和AFURLConnectionOperation
并设置相应的块,您可以在其中调整所需的机制。header 包含文档。
connection:willSendRequestForAuthenticationChallenge:
的子类中覆盖AFURLConnectionOperation
。这将有效覆盖AFNetworking中完整的身份验证机制设置。 请注意,您不能禁用“服务器验证客户端身份”身份验证挑战-这是服务器的一部分。您必须为请求的身份验证方法提供正确的凭据。
关于ios - NSURLConnection-禁用身份验证质询响应机制,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17358438/