2013-02-28 4 views
18

Привет, У меня есть следующий код получающий доступ к URL:Как добавить пользовательский заголовок AFNetworking на JSONRequestOperation

NSString * stringURL = [NSString stringWithFormat:@"%@/%@/someAPI", kSERVICE_URL, kSERVICE_VERSION]; 
NSURLRequest * request = [NSURLRequest requestWithURL:[NSURL URLWithString:stringURL]]; 

AFJSONRequestOperation * operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { 
    completionHandler(JSON, nil); 
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { 
    completionHandler(nil, error); 
}]; 

Но я хочу, чтобы передать маркер пользователя в качестве параметра на HEADER, как X-USER-TOKEN.

Не могу найти его на AFNetworking documentation, должен ли я изменить тип операции?

ответ

30

Используйте AFHTTPClient или подкласс it!

Вы можете установить заголовки по умолчанию с -setDefaultHeader:value:, как это:

[self setDefaultHeader:@"X-USER-TOKEN" value:userToken]; 

Вы можете проверить documentation

+12

Для AFN версии 2.х и AFHTTPRequestOperationManager, вы могли бы сделать это следующим образом: [manager.requestSerializer SetValue: @ "приложения/JSON" forHTTPHeaderField: @ "Accept"]; – Itachi

28
NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:url]; 

[request setValue: @"X-USER-TOKEN" forHTTPHeaderField:@"<clientToken>"]; 

[AFJSONRequestOperation JSONRequestOperationWithRequest: request ...] 
+1

Я думаю, что это наоборот? X-USER-TOKEN на HTTPHeaderField –

+1

возможно;). Я не знаю, было ли X-USER-TOKEN значением переменной или именем поля –

+0

awesome, спасибо! – kernix

3

Если у вас есть слой абстракции, скажем APIManager, то вы должны сделать следующие внутри конкретного метода

[[HTTPClient sharedHTTPClient].requestSerializer setValue:YOUR_KEY forHTTPHeaderField:@"X-Register"]; 
8

Я сделал это :)

[manager.requestSerializer setValue:[NSString stringWithFormat:@"Token token=\"%@\"", _userObj.oAuth] forHTTPHeaderField:@"Authorization"]; 
Смежные вопросы