情况
- 使用 AFNetworking (NSURLConnection) 访问我的服务器 API
- API 需要使用令牌作为用户名的基本身份验证
- 令牌无效时 API 返回 HTTP 401
- 我在任何请求之前设置了基本身份验证标头
如果它返回 401,我会像这样重试:
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]; }];
问题
- 当服务器返回带有基本身份验证质询的 HTTP 401 时,AFNetworking/NSURLConnection发送相同的请求两次(初始请求,然后响应身份验证质询)
- 但是由于上面的代码是我自己处理 HTTP 401,这完全没有必要 ,我希望它自动停止回答身份验证挑战
我试过的
- 响应
cancelAuthenticationChallenge:
towillSendRequestForAuthenticationChallenge:
是中止第二次调用,但它给出了错误代码 -1012 (NSURLErrorUserCancelledAuthentication) 而不是 401 并掩盖了真正的响应
如何禁用身份验证质询响应机制,以便在不调用两次的情况下获得服务器响应?