@property(nonatomic,strong) AFHTTPSessionManager *session;
-(instancetype)init
{
if (self = [super init]) {
_session= [AFHTTPSessionManager manager];
//有json 也有x-www-form-urlencoded
//添加返回数据的类型支持
_session.responseSerializer = [AFJSONResponseSerializer serializer];
// 设置超时时间
_session.requestSerializer.timeoutInterval = 11.0f;
[_session.requestSerializer didChangeValueForKey:@"timeoutInterval"];
[_session.requestSerializer setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
//注意如果是json格式 [_session.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
_session.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/plain", @"multipart/form-data", @"application/json", @"text/html", @"image/jpeg", @"image/png", @"application/octet-stream", @"text/json",@"text/javascript",@"text/plain", nil];
[_session.requestSerializer didChangeValueForKey:@"timeoutInterval"];
NSString *tokenStr = [[NSUserDefaults standardUserDefaults] objectForKey:@"token"];
//设置token
if (tokenStr != nil) {
NSString *appendTokenStr = [NSString stringWithFormat:@"token=%@",tokenStr];
[ _session.requestSerializer setValue:appendTokenStr forHTTPHeaderField:@"Cookie"];
}
}
return self;
}
如果服务器请求参数格式有多种,比如"application/json"、"application/x-www-form-urlencoded" “raw”//raw按照json处理即可,可以设置个枚举,在请求的时候传递参数格式
typedef NS_ENUM(NSInteger, AFNRequestType) {
//请求数据格式为json
AFNRequestTypeJson,
//请求数据格式为application/x-www-form-urlencoded
AFNRequestTypeForm,
};
@property (assign, nonatomic) AFNRequestType type;
//.m
-(void)postWithUrl:(NSString *)Url Dict:(NSDictionary *)dict requestType:(AFNRequestType )requestType SuccessBlock:(SuccessBlock)successBlock FaileBlock:(FailBlock)failBlock{
switch (requestType) {
case AFNRequestTypeJson:
[[AFN Manager].session.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
break;
case AFNRequestTypeForm:
[[AFN Manager].session.requestSerializer setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
break;
default:
break;
}
}
// 请求方式
NSLog(@"请求方式:%@\n 请求URL:%@\n",task.originalRequest.HTTPMethod,Url)
//打印 请求头信息
NSLog(@"请求头信息:%@\n",task.originalRequest.allHTTPHeaderFields);
[_session POST:Url parameters:dict headers:nil progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
id responseObj = responseObject;
// 请求方式
NSLog(@"请求方式:%@\n 请求URL:%@\n",task.originalRequest.HTTPMethod,Url);
// 请求头信息
NSLog(@"请求头信息:%@\n",task.originalRequest.allHTTPHeaderFields);
}