2010-12-03 3 views
1

xmlパーサーを使って解析することで、urlを使ってリストを取得しています。サーバが正常に動作しないことがあります。サーバーが正常に動作していないときに警告を出す方法。私はそれが私がビューコントローラに警告をdispalying午前ゼロを返したときにrepctiveリストを返すために、URLにパラメータを送信していますサーバが正常に動作していないときにアラートを表示するにはどうすればよいですか?

-(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 *[email protected]"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; 
    } 
} 

以下のコードを与えています。

ただし、サーバーが正常に動作していない場合は、このアラートを表示する方法。

私を助けてください。

ありがとう、 マダンモハン。

答えて

0

私の意見では: 最初に、サーバーに対して要求操作を実行して応答します。

第2に、BOOL変数で受信した応答をキャッチします。

最後に、BOOL変数がTRUEの場合は、[[解析...]などの操作を行います。 それ以外の場合は、適切なエラーメッセージが表示されます。

0

私は、parseXMLFileAtURLを使ってそれを行うには完全に良い方法があると確信しています。私はそうではありません。

私が知っていることは、the excellent ASIHTTPRequest libraryを使用して非同期リクエストを行うと、そのすべてがあなたのために処理されることです。 2つのデリゲートメソッドRequestFinishedRequestFailedを作成し、結果が明らかなときにそれらのメソッドの1つが呼び出されます。

In RequestFinishedでは、応答オブジェクトの文字列部分を解析します。

In RequestFailedでは、アラートを表示してそこから進める方法を決定します。

+0

を解析するためmResulDataを送ることができますそれをはっきり説明できますか?ありがとうございました。 –

+0

私はあなたに何を説明したいのか分かりません。私が指し示したライブラリを使用してhttpリクエストを作成する場合、2つのデリゲートメソッドを利用できます。そのライブラリを使用していない場合は、タイムアウトやエラーメッセージなどを処理する別の方法があると確信しています。私は知りません。私は図書館が好きです。なぜなら、面倒な手間を省くからです。詳細を知りたい場合は、リンクをクリックしてください。 –

0

このためUが非同期要求usingNSURLRequestそのデリゲート方法

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

{

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

}

で、次いで

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]

とを作成します

- (ボイド)接続:(NSURLConnection *)接続didReceiveData:(NSDataの*)データ {

[mResultData appendData:data]; 

}

//サーバ側 からも問題が彼らの場合、このメソッドは、コール - ( (NSURLConnection *)接続didFailWithError:(NSError *)エラー {
[mResultData release]; mResultData = nil; [mURLConnection release]; mURLConnection = nil;
//ここにエラーを表示 UIAlertView * theAlert = [[UIAlertView alloc] initWithTitle:kAlertTitleメッセージ:[エラーlocalizedDescription]デリゲート:なしcancelButtonTitle:@ "OK" otherButtonTitles:nil]; [theAlert show]; [theAlert release]; }

  • (無効)connectionDidFinishLoading:(NSURLConnection *)接続 {

    //ここでuが // NSXMLParserを作成

}

+0

私はこれを知っています。でも、xmlパーサのdidFailWithErrorのようなメソッドがあります。 –

+0

私はこれをパーサーでブール値を使って処理しました。 –