Как отобразить alert-view и действия в соответствии с ответом от URL в iphone SDK? - PullRequest
0 голосов
/ 30 ноября 2011

У меня есть раздел входа, в который пользователь может войти со своим именем пользователя и паролем.В приложении доступна опция создания аккаунта.

Когда имя пользователя и пароль подтверждены успешно, URL возвращает массив сведений о пользователе, а если проверка не удалась, появляется код ошибки (ошибка 404).

Я получил правильныйответ от URL, но мне нужно, чтобы при просмотре предупреждений с кодом ошибки 404 или при ответе на него не происходило перехода на главную страницу.

Как бы я поставил условие для этого.Мой код -

 NSString *uname = _txtmemberId.text;

            NSString *pwd   = _txtpassword.text;

            NSString *urlVal = @"http:example&var1=";

            NSString *urlVal1 = [urlVal stringByAppendingString:uname];

            NSString *urlVal2 = [urlVal1 stringByAppendingString:@"&var2="];

            NSString *urlVal3 = [urlVal2 stringByAppendingString:pwd];



            NSString * encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(
                                                                                           NULL,
                                                                                           (CFStringRef)urlVal3,
                                                                                           NULL,
                                                                                           (CFStringRef)@"\n" "",

                                                                                           kCFStringEncodingUTF8 );


            NSURL *url = [NSURL URLWithString:encodedString];

            NSString *resultString = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];

            UIAlertView *loginalert = [[UIAlertView alloc] initWithTitle:@" Message" message:resultString delegate:self
                                                       cancelButtonTitle:@"OK" otherButtonTitles:nil];

            [loginalert show];

           [loginalert release];

            ParallelReadViewController *detailViewController = [[ParallelReadViewController alloc] initWithNibName:@"ParallelReadViewController" bundle:nil];

             //detailViewController.firstString = firstString;
             // ...
             // Pass the selected object to the new view controller.

             [self.navigationController pushViewController:detailViewController animated:YES];

             [detailViewController release];

, если вход в систему неуспешен, он не перейдет на страницу Parallelviewcontroller. Строка результата - это строка, полученная из URL-адреса, успешного или неуспешного.Как это сделать?заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 01 декабря 2011

1 способ> Вы можете получить html-файл с этим кодом в виде строки, чтобы можно было извлечь ошибку из этого сообщения с помощью prsing ... и затем вы можете проверить сообщение об ошибке и перейти на страницу.

 NSString *str = @"YOUR LINK";
    NSURL *url=[NSURL URLWithString:str];
    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
    NSURLResponse *response;
    NSError *error; 
    NSData *urlData = nil;
    urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

    NSString *serverOutput = [[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding];

    NSLog(@"%@",serverOutput);
    [request release];

2 способа> Вы можете сообщить своему разработчику веб-службы, что они ответят на неудачный вход в систему, чтобы с помощью этого ответа вы могли легко дать условие с помощью условия if.

0 голосов
/ 30 ноября 2011

Объявите resultString глобально. Реализация метода делегата UIAlertView

       - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
    {
if(resultstring == 404)
{
    status = YES;   // declare globally
}
    }

Поставьте условие проверки, чтобы выдвинуть представление

if(status)
{
ParallelReadViewController *detailViewController = [[ParallelReadViewController alloc] initWithNibName:@"ParallelReadViewController" bundle:nil];

             //detailViewController.firstString = firstString;
             // ...
             // Pass the selected object to the new view controller.

             [self.navigationController pushViewController:detailViewController animated:YES];

             [detailViewController release];

}

Надеюсь, эта работа для вас.

...