2.网络请求AFNetworking

作者: IIronMan | 来源:发表于2016-08-28 23:30 被阅读69次

简述:网络请求是大家都会遇到的问题,以及图片或者文字的上传,下面详细的讲解,帮助大家解决数据交互的问题,喜欢的最后记得点赞!

    1. 数据的交互无非两种:数据请求数据上传

(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);
       }
简单的图片上传

简单的小demo 密码: jf95

相关文章

网友评论

    本文标题:2.网络请求AFNetworking

    本文链接:https://www.haomeiwen.com/subject/keazsttx.html