Как показать предупреждение, когда сервер не работает должным образом? - PullRequest
1 голос
/ 03 декабря 2010

Я получаю список, используя url, выполняя его синтаксический анализ, используя xml-анализатор.иногда сервер не работает должным образом.тогда как дать предупреждение, когда сервер не работает должным образом.Я дал код ниже

-(NSMutableArray*)getCustomerList:(NSString *)count category:(NSString *)aCategory alphabetic:(NSString *)alphabeticValue favorite:(NSString *)isFavoriteString
{
    [self updateStatus];
    if (internetConnectionStatus == NotReachable) 
    {

        UIAlertView *reachbleAlert = [[UIAlertView alloc] initWithTitle:@"message"
                                                                message: @"No network available alert"
                                                               delegate:self 
                                                      cancelButtonTitle:@"Ok"
                                                      otherButtonTitles: nil];
        [reachbleAlert show];   
        [reachbleAlert release];
        return 0;
    }
    else 
    {

        NSString *urlString=@"http:getCustomerList.jsp";
        urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        [dataParser parseXMLFileAtURL:[NSURL URLWithString:urlString]];
        NSMutableArray *list =[dataParser getCustomerListFromParser];
        printf("\n url for Customer List%s",[urlString UTF8String]);
        printf("\n Customer List   %d",[list count]);
        return list;
    }
}

Я отправляю параметр в URL, чтобы вернуть список рептилий, когда он возвращает ноль. Я отображаю предупреждение в контроллере представления.

но когда сервер не работает должным образом, как отобразить это предупреждение.

Пожалуйста, помогите мне в этом.

Спасибо, Мадан Мохан.

Ответы [ 3 ]

0 голосов
/ 03 декабря 2010

По моему мнению: сначала выполните операцию запроса к серверу для любого ответа.

Во-вторых, перехватите ответ, полученный в переменной BOOL.

Наконец, когда ваша переменная BOOL равна TRUE, выполнитетребуемая операция [например, синтаксический анализ ..] В противном случае просто отобразите предупреждающее сообщение с соответствующим сообщением об ошибке.

0 голосов
/ 03 декабря 2010

для этого вы создаете асинхронный запрос, используя NSURLRequest

NSURL *theURL=[[NSURL alloc]initWithString:@"**YOUR URL**"]; NSMutableURLRequest *theRequest = [[NSMutableURLRequest alloc] initWithURL:theURL]; [theRequest setTimeoutInterval:150]; [theURL release]; mURLConnection=[[NSURLConnection alloc]initWithRequest:theRequest delegate:self]; [theRequest release]

, а затем в методе их делегата

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 

{

if (mResultData == nil) //mResultData is NSData(member variable) 
    mResultData = [[NSMutableData alloc] init];
[mResultData setLength: 0];

}

- (недействительное) соединение: (NSURLConnection *) соединение didReceiveData: (NSData *) data {

[mResultData appendData:data];  

}

// этот метод вызывается, если ихесть какие-либо проблемы со стороны сервера - (пустое) соединение: (NSURLConnection *) соединение didFailWithError: (NSError *) ошибка {
[выпуск mResultData];mResultData = ноль;[выпуск MURLConnection];mURLConnection = nil;
// здесь отображается ошибка UIAlertView * theAlert = [[UIAlertView alloc] initWithTitle: kAlertTitle сообщение: [ошибка localizedDescription] делегат: nil cancelButtonTitle: @ "Ok" otherButtonTitles: nil];[Оповещение шоу];[релиз оповещения];}

  • (void) connectionDidFinishLoading: (NSURLConnection *) connection {

    // здесь вы можете отправить mResulData для анализа // создать NSXMLParser

}

0 голосов
/ 03 декабря 2010

Я уверен, что есть отличный способ сделать это с помощью parseXMLFileAtURL. Я так не делаю.

Что я знаю, так это то, что если вы используете превосходную библиотеку ASIHTTPRequest для выполнения асинхронного запроса, все это позаботится о вас. Вы создаете два метода делегата, RequestFinished и RequestFailed , и один из них будет вызван, когда результат станет ясен.

В RequestFinished вы бы проанализировали строковую часть объекта ответа.

В RequestFailed вы отобразите предупреждение, а затем решите, как действовать дальше.

...