• ios开发 AFNetworking的基本使用方法


    AFNetworking的基本使用方法

    什么是GET请求?

    如果只是单纯的下载数据, 使用GET请求

     

    什么是POST请求?

    特点:  请求的内容不会出现在URL网址中

    向服务器发送用户名和密码, 或者上传文件, 使用POST

    1.GET请求(html,json,xml

    -(void)testGetRequset
    {
        NSString *urlString=@"http://www.baidu.com";
        urlString=@"http://m.weather.com.cn/data/101010100.html";
        
        //定义AFNetworking管理
        AFHTTPRequestOperationManager *manager=[AFHTTPRequestOperationManager manager];
        //注意:默认认为数据是JSON,content-type也是JSON,responseObject是解析的字典和数组,不是产生错误Code=-1016
        //解决:设置解析器为HTTP形式,下载回来是NSData
        manager.responseSerializer=[AFHTTPResponseSerializer serializer];
        [manager GET:urlString parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
            //responseObject重要参数,包含下载数据
            //NSLog(@"ok = %@",responseObject);
            NSString *str=[[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
            NSLog(@"str = %@",str);
            
        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
            NSLog(@"error = %@",error);
        }];
    }

    2.POST请求

    -(void)testPostRequset
    {
        //POST接口:http://quiet.local/testdir/login.php
        //参数1:@"user":@"quiet"
        //参数2:@"password":@"123"
        NSString *urlString=@"http://quiet.local/testdir/login.php";
        AFHTTPRequestOperationManager *manager=[AFHTTPRequestOperationManager manager];
        manager.responseSerializer=[AFHTTPResponseSerializer serializer];
        
        //参数1:传入地址
        //参数2:传入URL请求的参数,格式传入字典
        [manager POST:urlString parameters:@{@"user": @"tiger",@"password":@"123"} success:^(AFHTTPRequestOperation *operation, id responseObject) {
            NSString *str=[[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
            NSLog(@"str = %@",str);
        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
            NSLog(@"error = %@",error);
        }];
    }

    3.上传文件(上传图片)

    -(void)testUploadFile
    {
        NSString *urlString=@"http://quiet.local/uploadtest/upload.php";
        //参数名:image:参数值是图片
        AFHTTPRequestOperationManager *manager=[AFHTTPRequestOperationManager manager];
        manager.responseSerializer=[AFHTTPResponseSerializer serializer];
        [manager POST:urlString parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
            //实现:上传的数据附加到请求体中
            NSString *path=[[NSBundle mainBundle] pathForResource:@"1.jpg" ofType:nil];
            [formData appendPartWithFileURL:[NSURL fileURLWithPath:path] name:@"image" fileName:@"150140.jpg" mimeType:@"image/jpeg" error:nil];
        } success:^(AFHTTPRequestOperation *operation, id responseObject) {
            NSString *str=[[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
            NSLog(@"str = %@",str);
        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
            NSLog(@"error = %@",error);
        }];
    }

    4.下载文件

    -(void)testDownloadFile
    {
        NSString *urlString = @"http://imgcache.qq.com/club/item/avatar/zip/7/i87/all.zip";
        //创建会话管理器对象(通过默认配置)
        AFURLSessionManager *manager=[[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
        NSURLSessionDownloadTask *task=[manager downloadTaskWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlString]] progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
            //返回文件保存的位置
            NSString *path=[NSString stringWithFormat:@"%@/Documents/all.zip",NSHomeDirectory()];
            NSLog(@"path = %@",path);
            return [NSURL fileURLWithPath:path];
        } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
            NSLog(@"下载完成");
        }];
        
        //启动任务
        [task resume];
        
    }

    5.监控网络状态

    -(void)testMonitorNetworkStautus
    {
        AFHTTPRequestOperationManager *manager=[[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:@"www.baidu.com"]];
        [manager.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
            NSDictionary *dic=@{@(AFNetworkReachabilityStatusUnknown): @"未知",@(AFNetworkReachabilityStatusNotReachable):@"不可达",@(AFNetworkReachabilityStatusReachableViaWWAN):@"GPRS",@(AFNetworkReachabilityStatusReachableViaWiFi):@"Wifi"};
            NSLog(@"状态为 %@",dic[@(status)]);
        }];
        [manager.reachabilityManager startMonitoring];
    }

    6.图片异步下载(替代SDWebimage

        (1)包含头文件:UIKit+AFNetworking.h

        (2)使用:-(void)setimageWithURL:(NSURL *)url

     

    7.有些请求特殊的请求头

        例如:BAIDU_WISE_UID=wapp_1428385381699_466;

    BAIDU_WISE_UID=wapp_1428385381699_466;
    
    AFHTTPRequestOperationManager *manager=[AFHTTPRequestOperationManager manager];
    
    [manager.requestSerializer setValue:@"wapp_1428385381699_466" forHTTPHeaderField:@"BAIDU_WISE_UID"];
  • 相关阅读:
    websocket
    关于Java中的常量优化机制
    关于使用键盘录入Scanner录入不对应类型的错误
    哈希表
    集合-----双列
    树形结构
    leetcode_14: 最长公共前缀
    leetcode_283_移动零
    leetcode_4_ 寻找两个正序数组的中位数
    leetcode_402_ 移掉K位数字
  • 原文地址:https://www.cnblogs.com/DWdan/p/4399197.html
Copyright © 2020-2023  润新知