IOS开发-网络通信AFNetworking 3.0 --测试使用2

书接上文:

1 获取JSON数据

#pragma mark 获取JSON数据
- (void)GetJson
{
    NSString * urlStr = @"http://127.0.0.1/videos.json";
    
    //1.定义manager
    AFHTTPSessionManager * manager = [AFHTTPSessionManager manager];
    
    //2.GET方法
    [manager GET:urlStr parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        //在main线程执行
        //已经反序列化了
        NSLog(@" %@  %@",responseObject,[NSThread currentThread]);
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"error %@",error);
    }];
}


2.获取XML数据

#pragma mark --XML的解析
- (void)GetXML
{
    NSString * urlStr = @"http://127.0.0.1/videos.xml";
    AFHTTPSessionManager * manager = [AFHTTPSessionManager manager];
    
    //默认的响应解析器是JSON的,所以这里需要改一下,改成XML的
    //指定我们的响应解析器是解析XML (会返回NSXMLParaser:对象)也就是需要SAX方式手动解析
    manager.responseSerializer = [AFXMLParserResponseSerializer serializer];
    
    [manager GET:urlStr parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        //已经把发序列化完成的结果都直接返回了。可以更新UI了
        //这里面的代码在main线程中执行
        NSLog(@"%@   %@",responseObject,[NSThread currentThread]);
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"error: %@",error);
    }];
    
    //返回的结果:2016-03-17 15:16:25.704 AFNetworking简单使用[36657:515591] <NSXMLParser: 0x7fb5fbd3baf0>   <NSThread: 0x7fb5fbe08760>{number = 1, name = main}
    
}


3.GET登录

#pragma mark --Get登录
- (void)GetLogin1
{
    NSString * urlStr = @"http://127.0.0.1/login.php?username=zhangsan&password=zhang";
    AFHTTPSessionManager * manager = [AFHTTPSessionManager manager];
    
    //GET方法
    [manager GET:urlStr parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSLog(@"%@   %@",responseObject, [NSThread currentThread]);
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"%@",error);
    }];
}

#pragma mark ---Get登录2
/**
 1. 没有URL,只需要指定一个url的字符串
 2. 网络请求是异步。 完成以后的回调代码快直接是在主线程
 3. 已经实现了反序列化
 4. 如果get方法,需要传递参数,可以使用字段的方式传递。程序猿不需要关心url里面的参数格式
 */
- (void)GetLogin2
{
    NSString * urlStr =@"http://127.0.0.1/login.php";
    AFHTTPSessionManager * manager = [AFHTTPSessionManager manager];
    
    NSDictionary * params = @{@"password" : @"zhang", @"username" :@"zhangsan"};

    [manager GET:urlStr parameters:params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
          NSLog(@"%@   %@",responseObject, [NSThread currentThread]);
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"error = %@",error);
    }];
}


4.POST 常规方法

#pragma mark POST常规方法
/*
 POST方法,如果需要传递参数,也可以以字典的形式传递
 */
- (void)PostLogin
{
    NSLog(@"PostLogin");
    NSString * urlStr = @"http://127.0.0.1/login.php";
    
    AFHTTPSessionManager * manager = [AFHTTPSessionManager manager];
    
    NSDictionary * params = @{@"password" : @"zhang",@"username" : @"zhangsan"};
    
    //POST方法
    [manager  POST:urlStr parameters:params constructingBodyWithBlock:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSLog(@"%@ %@",responseObject,[NSThread currentThread]);
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"error = %@",error);
    }];
}

5.POST上传zip文件

- (void)POSTDemo1
{
    NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
    AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:configuration];
    
    NSString *urlStr = @"http://127.0.0.1/post/upload.php";
    
    [manager POST:urlStr parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
        // 要上传的图片的路径
        NSURL *fileUrl = [[NSBundle mainBundle] URLForResource:@"1.zip" withExtension:nil];
        
        /**
         FileURL:要上传的文件的url
         name: 上传到服务器,接受这个图片的字段名
         这种方式,没办法修改这个文件在服务器的名称
         */
        //        [formData appendPartWithFileURL:fileUrl name:@"userfile" error:NULL];
        /**
         FileURL:要上传的文件的url
         name: 上传到服务器,接受这个图片的字段名
         fileName :  这个文件在服务器的名称
         mimeType: 表示要上传的文件的类型
         格式: 大类/小类
         JPG image/jpg
         PNG image/png
         JSON application/json
         zip  application/zip
         */
        [formData appendPartWithFileURL:fileUrl name:@"userfile" fileName:@"1.zip" mimeType:@"application/zip" error:NULL];
        
    } progress:^(NSProgress * _Nonnull uploadProgress) {
        
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSLog(@"success");
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"fail error = %@",error);
    }];
    
}


Demo代码以及Apache服务器的文件:

http://www.oschina.net/code/snippet_2290420_54774


你可能感兴趣的:(  IOS开发-网络通信AFNetworking 3.0 --测试使用2)