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
Другие вопросы по тегам