AFNetWorking 的Header的传值

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方法的获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值