我试图让我的应用程序处理 HTTP 客户端错误。理想情况下,无论何时发生此类错误,我都想运行一个静态方法,而不管导致它的请求是什么。
似乎我做错了什么——我试图添加一个RKDynamicResponseDescriptor
来调用该方法,但它没有被调用。每当我的服务器响应错误时,请求永远不会完成(网络活动指示器一直在旋转,并且AFNetworkingOperationDidFinishNotification
永远不会发布。)
我可以通过创建这样的新AFHTTPRequest
请求来重现该行为:
request = [[RKObjectManager sharedManager].HTTPClient requestWithMethod:@"GET" path:@"events" parameters:nil];
AFHTTPRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request
success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
NSLog(@"%@", JSON);
}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
NSLog(@"Request Failed with Error: %@, %@", error, error.userInfo);
}];
既不调用success
也不failure
调用块。如果我将第一行替换为
request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:url]];
块被调用。如何让 RestKit 处理 HTTP 错误响应?
编辑 1:401
显然,当服务器返回身份验证质询时,这两种情况都会发生。我尝试在RKHTTPRequestOperation
in 中设置断点didReceiveAuthenticationChallenge
,但未触发。我的 Fiddler 显示只发送了一个请求。