您的位置:首页 > 移动开发 > IOS开发

iOS 为支持ipv6 最新 AFNetWorking 3.0 数据请求基本使用。

2017-03-03 15:27 796 查看
常用的两种请求方式GET POST      1.requestURLString 请求网址  2.parameter  POST请求参数
 3.dic 为请求回来的数据

倒入头文件

#import "UIKit+AFNetworking.h"

#import "AFNetworking.h"

#pragma --mark GET请求方式

        AFHTTPSessionManager *manager = [AFHTTPSessionManagermanager];

        manager.responseSerializer = [AFHTTPResponseSerializerserializer];

        [manager GET:requestURLStringparameters:nilprogress:^(NSProgress
*_Nonnull downloadProgress) {

            

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

           

            NSDictionary *dic = [NSJSONSerializationJSONObjectWithData:responseObject

                                                                
options:NSJSONReadingAllowFragments

                                                                  error:nil];

            DDLog(@"%@", dic);

             

            block(dic);

         }

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

           failureBlock();

        }];

#pragma --mark POST请求方式

    AFHTTPSessionManager *manager = [AFHTTPSessionManagermanager];

   

    manager.responseSerializer = [AFHTTPResponseSerializerserializer];

    [manager POST:requestURLStringparameters:parameterprogress:^(NSProgress
*_Nonnull uploadProgress) {

        

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

        NSDictionary *dic = [NSJSONSerializationJSONObjectWithData:responseObject

                                                           
options:NSJSONReadingAllowFragments

                                                             
error:nil];

        DDLog(@"%@", dic);

        

        block(dic);

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

         failureBlock();

    }];

}

=================================================================================

代码写完以后:我们还要在修改一个类才可以支持ipv6

这个类:AFNetworkReachabilityManager

.h文件更改之前:

+ (instancetype)managerForAddress:(constvoid *)address;

改成:

+ (instancetype)managerForAddress:(conststructsockaddr_in6*)address;

接下来更改.m文件

更改之前:

+ (instancetype)managerForAddress:(constvoid *)address {

    SCNetworkReachabilityRef reachability =SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault,
(conststructsockaddr *)address);

    AFNetworkReachabilityManager *manager = [[selfalloc]initWithReachability:reachability];

    return manager;

}

更改之后:

+ (instancetype)managerForAddress:(conststructsockaddr_in6*)address
{

    SCNetworkReachabilityRef reachability =SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault,
(conststructsockaddr *)address);

    AFNetworkReachabilityManager *manager = [[selfalloc]initWithReachability:reachability];

    CFRelease(reachability);

    

    return manager;

}

还有一处:

更改之前:

+ (instancetype)sharedManager {

    staticAFNetworkReachabilityManager *_sharedManager =nil;

    staticdispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

        _sharedManager = [selfmanager];

    });

    return _sharedManager;

}

更改之后:

+ (instancetype)sharedManager {

    

    staticAFNetworkReachabilityManager*_sharedManager =nil;

    

    staticdispatch_once_t onceToken;

    

    dispatch_once(&onceToken, ^{

        

        structsockaddr_in6 address;

        

        bzero(&address,sizeof(address));

        

        address.sin6_len=sizeof(address);

        

        address.sin6_family=AF_INET6;

        

        _sharedManager = [selfmanagerForAddress:&address];

        

    });

    

    return _sharedManager;

    

}

改完这些基本就可以实现支持ipv6.

AFNetWorking 3.0  下载地址:
http://download.csdn.net/detail/wangqinglei0307/9769510
更改以后的地址:
http://download.csdn.net/download/wangqinglei0307/9846428
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: