简述:网络请求是大家都会遇到的问题,以及图片或者文字的上传,下面详细的讲解,帮助大家解决数据交互的问题,喜欢的最后记得点赞!
- 数据的交互无非两种:数据请求和数据上传
(1)用cocopods导入AFNetworking框架
pod 'AFNetworking', '~> 3.1.0'
再导入 AFNrequest 密码: bwqf
有时候打印出来的汉字无法直观的看到,那么我们就把它 转汉字,密码: ry2j导入,在工程里面运行一下就好了
(2)在项目里面导入下面的两个类
#import "AFNetworking.h"
#import "SXHTTPEngine.h"
在需要请求的地方输入
//这里放需要请求的接口:一般分页自己设置
NSString *url = http://192.168.80.254/jiekou/index.php?g=home&m=index&a=nearadlist"
//在子线程进行数据的请求
dispatch_async(dispatch_get_global_queue(0, 0), ^{
/* 网络数据的请求 */ [[SXHTTPEngine shareManager]POST:url params:nil success:^(id responseObject) { //NSLog(@"====%@",responseObject);对数据解析就好 /* 刷新主线程(刷表) */ dispatch_async(dispatch_get_main_queue(), ^{ [self.tableView reloadData]; }); } failure:^(NSError *error) { NSLLog(@"加载失败"); }]; });
- 2.下面讲解数据的上传(在此先不讲解关于图片的上传,后面专门讲解)
上传数据的接口 NSString *url = [NSString stringWithFormat:@"%@/jiekou/index.php?g=home&m=index&a=jdorder",DFTurl]; AFHTTPSessionManager *manger = [AFHTTPSessionManager manager]; manger.responseSerializer = [AFHTTPResponseSerializer serializer]; manger.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"]; //导航栏上的菊花(让状态栏显示网络等待的标志 [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; //这里放要上传的字段的内容 NSDictionary *parameter = @{@"userid":@"76"}; [manger POST:url parameters:parameter constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) { //formData用来存放视频或者照片等等 } progress:^(NSProgress * _Nonnull uploadProgress) { } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSLog(@"%@",responseObject); NSLog(@"上传成功"); 做一些上传成功后的跳转工作 } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { NSLog(@"%@",error); }];
- 3.下面讲解一下关于图片的上传,我们上传的图片可能不止一张,在此以数组的额形式上传
把上面的一段数据摘下来单独讲解图片的问题 //UploadArr是图片数组
[manager POST:str parameters:parameter constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) { NSLog(@"数组里面的内容=%@",UploadArr); NSLog(@"%ld--%@",UploadArr.count,UploadArr); for (int i = 0; i < UploadArr.count; i++) { // 时间转化字符串形式 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"; NSString *fileName = [NSString stringWithFormat:@"%@%d.png",[formatter stringFromDate:[NSDate date]],i]; NSLog(@"%@",UploadArr[i]); /** * 设置需要上传的文件 * UIImagePNGRepresentation(_iconView.image)-》将图片转成NSData * 第一个参数是需要上传的文件 * 第二个是后台规定的参数名 * 第三个文件名,但是后台一般不用,所以意义不大 * 第四个文件类型 */ [formData appendPartWithFileData:UIImagePNGRepresentation(UploadArr[i]) name:[NSString stringWithFormat:@"uploadFile%d",i] fileName:fileName mimeType:@"image/png"]; NSLog(@"%ld--%@",UploadArr.count,UploadArr); }