NSURLConnection и NSHTTPCookie - PullRequest
0 голосов
/ 27 июля 2011

Сценарий: аутентификация пользователя.Возьмите cookie, установите cookie для других запросов.Хорошо.Чего я не могу сразу понять, так это как справиться с ошибкой аутентификации, не выдвигая мой следующий вид на экран.если мой ответ {ошибки: {пароль: не совпадает}}, должен ли я также проанализировать этот ответ и создать условие соответственно?Должен ли я просто проверить код ответа?Я делаю это трудно, я могу сказать.Я добавил свой следующий вид в:

  • (void) connectionDidFinishLoading: (NSURLConnection *) connection

, поэтому, когда соединение заканчивается, оно естественным образом выдвигает следующий вид.Я бы хотел, чтобы он никогда не попадал сюда, если аутентификация тоже не удалась.Может быть, я не должен выдвигать свой следующий взгляд отсюда.Где тогда?

Ответы [ 2 ]

1 голос
/ 27 июля 2011

Я проверяю путь перенаправления: показывает, прошла ли аутентификация нормально или нет.

- (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
}
0 голосов
/ 27 июля 2011
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
...