AFN同步异步请求
Posted brucemengbm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AFN同步异步请求相关的知识,希望对你有一定的参考价值。
异步请求:
-(BOOL)getOnlyKey1 { NSString *myUUIDStr = [[[UIDevice currentDevice] identifierForVendor] UUIDString]; __block bool isTrue = false; AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/plain"]; NSString *urlstr = [NSString stringWithFormat:@"http://122.225.89.70:28080/try/check"]; NSURL *url = [NSURL URLWithString:urlstr]; NSDictionary *dic = @{@"imei":myUUIDStr,@"av":AppVersion}; [manager POST:urlstr parameters:dic success:^(AFHTTPRequestOperation *operation, id responseObject) { MyLog(@"%@", operation.responseString); NSRange range = [operation.responseString rangeOfString:@"\"msg\":\"0\""]; if (range.location != NSNotFound) { isTrue = true; } if (!isTrue) { SHOWALERT(@"错误", @"您须要联系开发者"); } } failure:^(AFHTTPRequestOperation *operation, NSError *error) { MyLog(@"返回失败结果:%@", error.localizedFailureReason); SHOWALERT(@"错误", @"请求开发者server失败"); isTrue = true; }]; return isTrue; }
同步请求:
-(BOOL)getOnlyKey2 { NSString *myUUIDStr = [[[UIDevice currentDevice] identifierForVendor] UUIDString]; BOOL isTrue = false; NSString *urlstr = [NSString stringWithFormat:@"http://122.225.89.70:28080/try/check"]; NSURL *url = [NSURL URLWithString:urlstr]; NSMutableURLRequest *urlrequest = [[NSMutableURLRequest alloc]initWithURL:url]; urlrequest.HTTPMethod = @"POST"; NSString *bodyStr = [NSString stringWithFormat:@"imei=%@&av=%@",myUUIDStr, AppVersion]; NSData *body = [bodyStr dataUsingEncoding:NSUTF8StringEncoding]; urlrequest.HTTPBody = body; AFHTTPRequestOperation *requestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:urlrequest]; requestOperation.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/plain"]; [requestOperation start]; [requestOperation waitUntilFinished]; MyLog(@"%@",requestOperation.responseString); NSRange range = [requestOperation.responseString rangeOfString:@"\"msg\":\"0\""]; if (range.location != NSNotFound) { isTrue = true; } if (!isTrue) { SHOWALERT(@"错误", @"您须要联系开发者"); } return isTrue; }
原生态的同步请求:
-(BOOL)getOnlyKey { NSString *myUUIDStr = [[[UIDevice currentDevice] identifierForVendor] UUIDString]; //应用版本 NSDictionary* infoDict =[[NSBundle mainBundle] infoDictionary]; NSString* versionNum =[infoDict objectForKey:@"CFBundleVersion"]; NSString *urlString = [NSString stringWithFormat:@"http://122.225.89.70:28080/try/check"]; NSURL *url = [NSURL URLWithString:urlString]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; [request setHTTPMethod:@"POST"]; NSString *bodyStr = [NSString stringWithFormat:@"imei=%@&av=%@",myUUIDStr, versionNum]; //将nstring转换成nsdata NSData *body = [bodyStr dataUsingEncoding:NSUTF8StringEncoding]; //MyLog(@"body data %@", body); [request setHTTPBody:body]; NSURLResponse *response = nil; NSError *error = nil; //第二,三个參数是指针的指针,全部要用取址符,这种方法是同步方法。同步操作没有完毕。后面的代码不会运行。 NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; // NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; // MyLog(@"返回结果是:%@", str); if (error == nil) { //接受到数据,表示工作正常 NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; MyLog(@"%@",str); NSRange range = [str rangeOfString:@"\"msg\":\"0\""]; if (range.location != NSNotFound) { return true; }else{ return false; UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"出错鸟" message:@"您须要联系项目开发者" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil]; [alert show]; } } if(error != nil || response == nil) { return false; UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"错误" message:@"登陆失败。网络不稳定" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil]; [alert show]; } return false; }
以上是关于AFN同步异步请求的主要内容,如果未能解决你的问题,请参考以下文章
微风·六:RequestOptions:请求方式(同步/异步)探究,及异步方式问题抛出
OkHttpOkHttp Get 和 Post 请求 ( 同步 Get 请求 | 异步 Get 请求 | 同步 Post 请求 | 异步 Post 请求 )