AFNetWorking 的Header的传值

来源:互联网 发布:java 公章识别 编辑:程序博客网 时间:2024/05/21 22:40

AFNetWorking 的Header的传值

首先分享下我们的AFNetWorking的数据封装
1,创建一个AFNetWorkingClient类继承自AFHTTPSessionManager

2,该类文件单例的实现

+ (instancetype)shareAFNetworkingClient{    static AFNetWorkingClient *client = nil ;    static dispatch_once_t once ;    dispatch_once(&once, ^{        client  = [[self alloc] initWithBaseURL:[NSURL URLWithString:nil]] ;        client.securityPolicy.allowInvalidCertificates = YES ;        client.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/html",@"text/json",@"text/javascript",@"multipart/form-data", nil];    });    return client ;}


3,数据请求的封装
Post:

+(void)PostTheDataFromServer:(NSString *)URLString parameters:(id)parameters success:(void (^)(id responseObject))success failure:(void (^)(NSError *error))failure{    AFNetWorkingClient *client = [AFNetWorkingClient shareAFNetworkingClient];    [client POST:[NSString stringWithFormat:@"%@%@",K_Api_Prefix,URLString] parameters:parameters success:^(NSURLSessionDataTask *task, id responseObject) {        success(responseObject) ;    } failure:^(NSURLSessionDataTask *task, NSError *error) {        failure(error) ;    }];}


Get:

+ (void)GetTheDataFromServer:(NSString *)URLString                  parameters:(id)parameters                     success:(void (^)(id responseObject))success                     failure:(void (^)(NSError *error))failure{    AFNetWorkingClient *client = [AFNetWorkingClient shareAFNetworkingClient];    [client GET:[NSString stringWithFormat:@"%@%@",K_Api_Prefix,URLString] parameters:parameters success:^(NSURLSessionDataTask *task, id responseObject) {        success(responseObject) ;    } failure:^(NSURLSessionDataTask *task, NSError *error) {        failure(error) ;    }];    }



4,数据请求接口的调用

[AFNetWorkingClient PostTheDataFromServer:postUrl parameters:dict success:^(id responseObject) {            } failure:^(NSError *error) { }];


回到正题,关于HTTPHeader的传值的方法
因为AFHTTPSessionManager有一个requestSerializer属性,该属性有一个
- (void)setValue:(NSString *)value forHTTPHeaderField:(NSString *)field {
    [self.mutableHTTPRequestHeaders setValue:value forKey:field];
}


可以做在传值的时候直接调用,比如

[client.requestSerializer setValue:[NSString stringWithFormat:@"%d", (long)[[NSDate date] timeIntervalSince1970]]forHTTPHeaderField:@"RequestTime"];
我传的是一个时间戳。

既然传值就要有怎么接收值
if ([URLString rangeOfString:@"goods/front/pagelist"].location != NSNotFound) {
            NSHTTPURLResponse *responseTask = (NSHTTPURLResponse *)task.response;
            if ([responseObject isKindOfClass:[NSDictionary class]] && ((NSDictionary*)responseObject).count > 0) {
                [dataDict setValuesForKeysWithDictionary:responseObject];
                [dataDict setObject:responseTask.allHeaderFields[@"RequestTime"] forKey:@"RequestTime"];
            }
        }

我是把NSURLSessionDataTask强转成NSHTTPURLResponse,进行allHeaderFields方法的获取

0 0
原创粉丝点击