• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
peer
............
博客园    首页    新随笔    联系   管理    订阅  订阅
网络错误的基本处理

1.首先明确下顺序:

   Eg:"POST"情况:string->NSData,NSMutableURLrequest,NSURLConnection, NSURLResponse


  static NSString *body = @"aaaaaa";//要POST的输入string

static NSString *URLString = @"http://earthquake.usgs.gov/eqcenter/catalogs/7day-M2.5.xml";

NSData *dataBody = [NSData dataWithBytes: [stringBody UTF8String] length: [body length]];//将string封装成NSData类型的数据

 


NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString: URLString]]; 

//发送请求,正式发送

 

[request setHTTPMethod:@"POST"];

[request setHTTPBody:dataBody];


 

NSURLResponse *response;

NSError *error;

[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];//发送同步连接+反馈请求


 

//在NSCocoaErrorsDomain领域中,除非你知道具体的CFNetWorkError类型,非则用[Error code]便利构造

if(error){

 

  NSError *locatedError = [NSError errorWithDomain:NSCocoaErrorDomain code:[error code]userInfo:[NSDictionarydictionary]];

//本地化描述具体的错误,用NSInteger返回ui,告知用户

NSString *errorMessage = [locatedError localizedDescription];


        //以下是弹出警告,为了UI的友好性要求

UIAlertView *alertV iew = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Error Title", @"")message:errorMessage delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];

[alertView show];

[alertView release];

}

 

2.Eg:默认"GET"情况:NSMutableURLrequest,NSURLConnection, NSURLRespons,String->NSData


>>>同上


 


[URLRequest setHTTPMethod:@"GET"];//默认为GET,否则是POST,也可不加

   //连接失败,则抛出异常,如有2中delegate监听,亦可不加

    NSAssert(self.earthquakeFeedConnection != nil, @"Failure to create URL connection.");

   //连接等待标志,必加的

    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;


2.哦了,以上的连接是最经典的代码,可以进行NSURLConnection delegate监听了~


 

1>

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

     //这里写些对response的处理,一般是些error处理,可以不在这里处理直接跳转到3>  

}

2>

 - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {

      //这里写些对data数据的处理,一般是初始化数据后,将data写入

}


3> 

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {

     [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;   

//在NSCocoaErrorsDomain领域中,除非你知道具体的CFNetWorkError类型,非则用[Error code]便利构造

NSError *locatedError = [NSError errorWithDomain:NSCocoaErrorDomain code:[error code] userInfo:[NSDictionary dictionary]]; 

//本地化描述具体的错误,用NSInteger返回ui,告知用户

NSString *errorMessage = [locatedError localizedDescription];


        //以下是弹出警告,为了UI的友好性要求

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Error Title", @"") message:errorMessagedelegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];

[alertView show];

[alertView release];

}


OVER, 以上是从xml获取信息移植到自定义app中的错误处理过程,~~

posted on 2011-05-19 10:05  peerlessly  阅读(1388)  评论(3)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3