{ _request = [[ASIHTTPRequest alloc] initWithURL:[[NSURL alloc] initWithString:url]]; _request.processType = processType; /* typedef enum{ ProcessNone=0,//无 ProcessDefault=1,//默认效果 黑色遮盖 ProcessSimple=2,//一般 只有转圈 } ProcessType; // 用来定义数据请求中界面的样式 */ [_request setDelegate:self]; [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; //创建活动图标 progress= [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake((self.navigationItem.titleView.frame.size.width-30)/2, (self.navigationItem.titleView.frame.size.height-60)/2, 20, 20)]; progress.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray; [self.navigationItem.titleView addSubview:progress]; [self _requestStart:processType]; [_request setTimeOutSeconds:10*60]; [_request startAsynchronous]; } //开始请求 -(void) _requestStart:(int)processType{ //无加载提示 if (processType == ProcessNone) { return; } if (processType == ProcessDefault) {//有黑色的背景 if (bvProgress == nil) { bvProgress = [[ButtonView alloc] initWithName:nil :@"加载中⋯⋯"]; [bvProgress.titleLabel setFont:[UIFont boldSystemFontOfSize:18]]; [bvProgress setTitleColor:TEXTCOLOR forState:UIControlStateNormal]; bvProgress.frame = CGRectMake(0, 0, [Global GetInstance].ScreenWidth, 480 - tabBarHeight); bvProgress.backgroundColor=BLACKBGCOLOR; //bvProgress.backgroundColor = [UIColor clearColor]; progress= [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake((bvProgress.frame.size.width-30)/2, (bvProgress.frame.size.height-60)/2, 20, 20)]; progress.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray; [bvProgress addSubview:progress]; [progress startAnimating]; [self.parentViewController.view addSubview:bvProgress]; } } if (processType == ProcessSimple) {//一般的显示效果 只有转圈 progress= [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake((320-30)/2, (460-44-tabBarHeight)/2, 20, 20)]; progress.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray; [self.view addSubview:progress]; [progress startAnimating]; } }
// 请求成功 - (void)requestFinished:(ASIHTTPRequest *)request { [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; //编码转换 gb2313 to UTF NSData * myResponseData = [request responseData]; [self _requestSuccess:request.processType]; // NSLog NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding (kCFStringEncodingUTF8);//kCFStringEncodingUTF8 NSString * myResponseStr = [[NSString alloc] initWithData:myResponseData encoding:enc]; //JsonResult *result = nil; NSDictionary *dic = [myResponseStr JSONValue]; if ([dic objectForKey:@"uid"]!=nil && ![[dic objectForKey:@"uid"] isEqualToString:@""]) { [UserInfo GetInstance].uid = [[dic objectForKey:@"uid"] intValue]; } else { //result = [[JsonResult alloc] initWithJSONStr:myResponseStr]; } NSLog(@"返回结果:%@",myResponseStr); //NSLog(@"jsonResult=%@",[result toJson]); //[self getTableView].pg = result.pg; // BOOL con = NO; // //提示用户需要登录 // if ([result.suggestAction isEqualToString:@"openLoginDlg"]) { // result.isneedLogin = YES; // con = YES; MyTouchController *touch = [[MyTouchController alloc] init]; touch.breakDelegate = self; [touch setBreakPage:BreakNeedLogin]; [self PushToTop:touch]; [touch release]; // } // //弹出信息 // else if ([result.suggestAction isEqualToString:@"alert"]){ // [Global messagebox:result.msg]; // con = YES; // } // else if([result.suggestAction isEqualToString:@"toast"]){ // [Global messagetoast:result.msg target:self.view parent:self]; // con = YES; // } // //服务端返回异常 // if (con == NO && !result.success) { // //[Global messagebox:@"服务端异常!"]; // [Global messagetoast:@"服务端异常" target:self.view parent:self]; // NSError *error = [request error]; // NSLog(@"请求时报错情况requestFailed:---%@",error); // NSLog(@"服务端返回的数据:%@",myResponseStr); // } // [myResponseStr release]; // //NSLog(@"memory 请求完成=%f mb",[[UIDevice currentDevice] availableMemory]); // if (con) { // [self responseReturnSuccess:result]; // return; // } //[self responseDataSuccess:result]; [self responseReturnSuccess:myResponseStr]; [myResponseStr release]; //NSLog(@"memory 加载数据结束=%f mb",[[UIDevice currentDevice] availableMemory]); } -(void) responseReturnSuccess:(NSString*)json{ if ([self getTableView].currentPage == 0) { [[self getTableView].tableArray removeAllObjects]; } } // 请求失败 - (void)requestFailed:(ASIHTTPRequest *)request { [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; NSError *error = [request error]; [self _requestFailed:request.processType]; NSLog(@"请求时报错情况requestFailed:---%@",error); // UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"出错了" message:@"已经取消了网络请求!" delegate:nil cancelButtonTitle:@"好的" otherButtonTitles:nil]; // [alert show]; // [alert release]; } -(void) _requestFailed:(int)processType{ if (processType == ProcessDefault) { if (bvProgress!=nil) { [progress stopAnimating]; [progress removeFromSuperview]; [progress release]; progress = nil; [bvProgress removeFromSuperview]; [bvProgress release]; bvProgress = nil; } } if (processType == ProcessSimple) { if (progress != nil) { [progress stopAnimating]; [progress removeFromSuperview]; [progress release]; progress = nil; } } NSLog(@"请求时报错情况_requestFailed:---%@",@"这个网络请求连接失败"); // UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"出错了" message:@"网络连接失败, 请稍后重试!" delegate:nil cancelButtonTitle:@"好" otherButtonTitles:nil]; // [alert show]; // [alert release]; }
网络请求
最新推荐文章于 2018-06-03 19:06:32 发布