NSURLConnection и NSHTTPCookie
Сценарий: аутентификация пользователя. Возьмите cookie, установите cookie для других запросов. Хорошо. То, что я не могу сразу понять, - это как справиться с неудачной аутентификацией, не выводя мой следующий вид на экран. если мой ответ {ошибки:{пароль: не совпадает}}, должен ли я также проанализировать этот ответ и создать условие соответственно? Должен ли я просто проверить код ответа? Я делаю это трудно, я могу сказать. Я добавил свой следующий вид в:
- (void) connectionDidFinishLoading: (NSURLConnection *) соединение
поэтому, когда соединение заканчивается, оно естественным образом выдвигает следующий вид. Я бы хотел, чтобы он не попал сюда, если аутентификация тоже не удалась. Может быть, я не должен выдвигать свой следующий взгляд отсюда. Где тогда?
2 ответа
Я проверяю путь перенаправления: это показывает мне, прошла ли аутентификация нормально или нет.
- (NSURLRequest*)connection:(NSURLConnection*)connection willSendRequest:(NSURLRequest*)request redirectResponse:(NSURLResponse*)redirectResponse
{
NSLog(@"willSendRequest (from %@ to %@)", redirectResponse.URL, request.URL);
NSString *from = [NSString stringWithFormat:@"%@",redirectResponse.URL];
NSString *to = [NSString stringWithFormat:@"%@",request.URL];
if([from isEqualToString:serverSignInPath] )
//logged=true
else
//logged=false
}
NSURLResponse *HTTPResponse = (NSURLResponse *)response;
NSInteger statusCode = [HTTPResponse statusCode];
if (404 == statusCode || 500 == statusCode) {
[connection cancel];
[(MyAppDelegate *)[[UIApplication sharedApplication] delegate] setNetworkActivityIndicatorVisible:NO];
}
Таким образом, он никогда не доходит до connectionDidFinishLoading, чтобы выдвинуть следующий вид.
Ответ Rails должен выглядеть следующим образом.
render :json => @foo.to_json, :status => 404