//
// HTTPRequest.h
// TrudianLife
//
// Created by CodeRiding on 2016/12/22.
// Copyright © 2016年 trudian. All rights reserved.
//
#import "HTTPRequest.h"
#import "TDSaveUserData.h"
#import "TDNormalDataUtil.h"
@implementation HTTPRequest
static AFHTTPSessionManager *manager;
+ (AFHTTPSessionManager *)sharedHTTPSession
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments];
[manager.requestSerializer willChangeValueForKey:@"timeoutInterval"];
[manager.requestSerializer didChangeValueForKey:@"timeoutInterval"];
manager.requestSerializer.timeoutInterval = 8.0f;
//如果报接受类型不一致请替换一致text/html或别的
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
});
return manager;
}
#pragma mark - 网络请求
+ (void)POST:(NSString *)url body:(id)formData response:(HttpReqestBlock)block
{
NSLog(@"[请求数据]%@\n%@",url,formData);
AFHTTPSessionManager *manager = [self sharedHTTPSession];
[manager POST:url parameters:formData progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"[返回数据_%@]\n%@",url,responseObject);
TDResponse *value = [TDResponse mj_objectWithKeyValues:responseObject];
if(value.rcode == 30061)
{
// rcode为30061表示需要重置rcode
// 测试机和正式机互相置换token就会失效
[TDNormalDataUtil requestResetBoToken:^(NSError *error, id response)
{
TDResponse *value = [TDResponse mj_objectWithKeyValues:response];
if (value.rcode ==10000)
{
NSDictionary *dict = [response dictionaryForKey:@"data"];
NSString *token = [dict stringForKey:@"token"];
if (token)
{
[[NSUserDefaults standardUserDefaults] setObject:token forKey:[TDSysConst tokenKey]];
[[NSUserDefaults standardUserDefaults] synchronize];
// 更新用户信息
{
[TDNormalDataUtil requestBoDetail:^(NSError *error, id response)
{
TDResponse *value = [TDResponse mj_objectWithKeyValues:response];
if (value.rcode ==10000)
{
[TDSaveUserData handleBODetailResponse:response];
// 重新请求失败的数据
NSMutableDictionary* tempDic = [formData mutableCopy];
tempDic[@"key"] = token;
[manager POST:url parameters:tempDic progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject)
{
block(nil,responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
}];
}
}];
}
}
}
}];
}else{
block(nil,responseObject);
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
block(error,nil);
}];
}
+ (void)POSTProgress:(NSString *)url body:(NSDictionary *)formData response:(ProgressBlock)block
{
AFHTTPSessionManager *manager = [self sharedHTTPSession];
[manager POST:url parameters:formData progress:^(NSProgress * _Nonnull uploadProgress) {
block(nil,nil,uploadProgress);
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
block(nil,responseObject,@"100");
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"Error:%@",error);
block(error,nil,@"0");
}];
}
+ (void)GET:(NSString *)url query:(NSDictionary *)queryData response:(HttpReqestBlock)block{
AFHTTPSessionManager *manager = [self sharedHTTPSession];
[manager GET:url parameters:queryData progress:^(NSProgress * _Nonnull downloadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
block(nil,responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"Error:%@",error);
block(error,nil);
}];
}
+ (void)DELETE:(NSString *)url body:(NSDictionary *)formData response:(HttpReqestBlock)block{
AFHTTPSessionManager *manager = [self sharedHTTPSession];
[manager DELETE:url parameters:formData success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
block(nil,responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"Error:%@",error);
block(error,nil);
}];
}
@end