AFNetworking3.0网络请求

来源:互联网 发布:sql loop循环 编辑:程序博客网 时间:2024/06/05 02:10


#import <Foundation/Foundation.h>

#import "AFNetworking.h"


typedefvoid(^CompletionLoad)(id result);


@interface DataService :NSObject


//AFNetworking 3.0

+ (void)requestWithURL:(NSString *)url

                params:(NSMutableDictionary *)params

            httpMethod:(NSString *)httpMethod

                 block:(CompletionLoad)block;





@implementation DataService



//AFNetworking 3.0

+ (void)requestWithURL:(NSString *)url

                params:(NSMutableDictionary *)params

            httpMethod:(NSString *)httpMethod

                 block:(CompletionLoad)block{

 

    NSMutableString *urlStr = [NSMutableStringstringWithFormat:@"%@%@",@"基类URLStr",url];

    

    

    // 初始化Manager

    AFHTTPSessionManager *manager = [AFHTTPSessionManagermanager];

    

    // 不加上这句话,会报“Request failed: unacceptable content-type: text/plain”错误,因为我们要获取text/plain类型数据

    manager.responseSerializer = [AFHTTPResponseSerializerserializer];

    manager.requestSerializer.timeoutInterval =10;


   if ([httpMethod isEqualToString:@"GET"]) { // 如果是get请求

       // Get请求

        [managerGET:urlStr  parameters:paramsprogress:^(NSProgress *_Nonnull downloadProgress) {

            //这里可以获取到目前的数据请求的进度

        }success:^(NSURLSessionDataTask *_Nonnull task, id _Nullable responseObject) {

            // 请求成功,解析数据 NSLog(@"%@", responseObject);

            NSDictionary *dic = [NSJSONSerializationJSONObjectWithData:responseObject options:NSJSONReadingMutableContainers |NSJSONReadingMutableLeaves error:nil];

           if (block) {

                block(dic);

            }

            

        }failure:^(NSURLSessionDataTask *_Nullable task, NSError *_Nonnull error) {

           // 请求失败

            if (block) {//NSLog(@"%@", [error localizedDescription]);

                block(error);

            }

        }];

        

    }elseif ([httpMethod isEqualToString:@"POST"]) {

        // post请求

        [managerPOST:urlStr parameters:paramsprogress:^(NSProgress *_Nonnull uploadProgress) {

            

        }success:^(NSURLSessionDataTask *_Nonnull task, id _Nullable responseObject) {

            //NSLog(@"%@",responseObject);

            NSDictionary *dic = [NSJSONSerializationJSONObjectWithData:responseObject options:NSJSONReadingMutableContainers |NSJSONReadingMutableLeaves error:nil];

           if (block) {

                block(dic);

            }

            

        }failure:^(NSURLSessionDataTask *_Nullable task, NSError *_Nonnull error) {

           // 请求失败

            if (block) {//NSLog(@"%@", [error localizedDescription]);

                block(error);

            }

        }];

        


        //使用下面这个方法时候 参数传不到服务器,会显示参数错误

//        [manager POST:urlStr parameters:dic constructingBodyWithBlock:^(id  _Nonnull formData) {

//            // 拼接data到请求体,这个block的参数是遵守AFMultipartFormData协议的。

//            

//        } progress:^(NSProgress * _Nonnull uploadProgress) {

//            // 这里可以获取到目前的数据请求的进度

//            

//        } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

//            // 请求成功,解析数据NSLog(@"%@", responseObject);

//            NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers | NSJSONReadingMutableLeaves error:nil];

//            if (block) {

//                block(dic);

//            }

//            

//        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

//            // 请求失败

//            if (block) {//NSLog(@"%@", [error localizedDescription]);

//                block(error);

//            }

//        }];

        

        

        

    }

}




在WWDC2015上苹果宣布iOS9将支持纯IPv6的网络服务。2016年初开始所有提交到App Store的应用必须支持IPv6。为确保现有的应用是兼容的,我们需要注意下面几点。


最后我们来搭一个IPv6的测试环境吧,你所需要的就是一台用非Wi-Fi的方式上网的Mac电脑。

我们的要做的其实就是用Mac做一个热点,然后用iPhone连接这个Wi-Fi,听起来很容易,我相信大家在公司就是这么干的吧。

区别是这次我们产生的是一个本地的IPv6 DNS64/NAT64网络,这项功能是OS X 10.11新加的。和我们以前开启热点方式不一样的地方在于,我们在“System Preferences”界面选中“Sharing”的同时,要按住“Option”键。


之后在“Sharing”界面中,我们会看到和之前不一样的地方,就是红框所标的地方,多了一个叫“Create NAT64 Network”的选框,选中它。

现在我们用iPhone连接上这个刚创建好的热点就可以测试了,注意此时要把iPhone设成飞行模式,以保证只用Wi-Fi上网。






0 0