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

97 篇文章 0 订阅
79 篇文章 2 订阅

常用的两种请求方式GET POST      1.requestURLString 请求网址  2.parameter  POST请求参数  3.dic 为请求回来的数据

倒入头文件

#import "UIKit+AFNetworking.h"
#import "AFNetworking.h"
#pragma --mark GET请求方式
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager GET:requestURLString parameters:nil progress:^(NSProgress *_Nonnull  downloadProgress) {
            

}success:^(NSURLSessionDataTask *_Nonnull task,id _Nullable responseObject) {
    NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject                                                        options:NSJSONReadingAllowFragments error:nil];
    DDLog(@"%@", dic);
    block(dic);
} failure:^(NSURLSessionDataTask *_Nullable task,NSError *_Nonnull   error) {  
    failureBlock();
}];

#pragma --mark POST请求方式
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager POST:requestURLString parameters:parameter progress:^(NSProgress *_Nonnull uploadProgress) {

} success:^(NSURLSessionDataTask *_Nonnull task,id _Nullable responseObject) {
    NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil];    
    DDLog(@"%@", dic);
    block(dic);
} failure:^(NSURLSessionDataTask *_Nullable task,NSError *_Nonnull error) {
    failureBlock();
}];

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

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

这个类:AFNetworkReachabilityManager

.h文件更改之前:

+ (instancetype)managerForAddress:(const void *)address;

改成:

+ (instancetype)managerForAddress:(const struct sockaddr_in6*)address;

接下来更改.m文件

更改之前:

+ (instancetype)managerForAddress:(const void *)address {
    SCNetworkReachabilityRef reachability =SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, (conststructsockaddr *)address);
    AFNetworkReachabilityManager *manager = [[self alloc]initWithReachability:reachability];
    return manager;
}

更改之后:

+ (instancetype)managerForAddress:(const struct sockaddr_in6*)address {
    SCNetworkReachabilityRef reachability =SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, (const struct sockaddr *)address);
    AFNetworkReachabilityManager *manager = [[self alloc]initWithReachability:reachability];
    CFRelease(reachability);
    return manager;
}

还有一处:

更改之前:

+ (instancetype)sharedManager {
    static AFNetworkReachabilityManager *_sharedManager =nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _sharedManager = [self manager];
    });
    return _sharedManager;
}

 

更改之后:

+ (instancetype)sharedManager {
    static AFNetworkReachabilityManager *_sharedManager =nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        struct sockaddr_in6 address;
        bzero(&address,sizeof(address));
        address.sin6_len=sizeof(address);
        address.sin6_family=AF_INET6;
        _sharedManager = [self managerForAddress:&address]; 
    });
    return _sharedManager;
}

 

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

 
AFNetWorking 3.0  下载地址:
 
http://download.csdn.net/detail/wangqinglei0307/9769510

 

更改以后的地址:

 

http://download.csdn.net/download/wangqinglei0307/9846428

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王 哪跑!!!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值