常用的两种请求方式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