2013-11-21 1 views
4

У меня возникли проблемы с использованием аутентификации токена HTTP с помощью NSMutableURLRequest. Я провел некоторое исследование и использовал следующий вопрос: ios managing authentication tokens from NSURLRequest/HTTP request, чтобы узнать, как установить токен в HTTP-заголовке. Однако токен, который мне нужно установить, - это не просто поле заголовка со значением. Мне нужно установить поле заголовка HTTP (или несколько), чтобы оно выглядело так: Authorization: Token token="tokenHere", nonce="def". Следующие фрагменты кода являются примерами вещей, которые я попробовал, что потерпели неудачу:IOS - аутентификация токена в HTTP-заголовках с NSURLRequest

//failed to authenticate with server 
[request setValue:@"tokenHere" forHTTPHeaderField:@"token"]; 
[request setValue:@"def" forHTTPHeaderField:@"nonce"]; 

//failed as well 
NSDictionary *authToken = [NSDictionary dictionaryWithObjectsAndKeys: 
          @"tokenHere", @"token", 
          @"def", @"nonce", 
          nil]; 

[request setValue:[NSString stringWithFormat:@"Token %@", authToken] forHTTPHeaderField:@"Authorization"]; 

//failed again 
[request setValue:@"Authorization: Token token='tokenHere', nonce='def'" forHTTPHeaderField:@"Authorization"]; 

Задняя сервер запрограммирована в рубине, и ожидает один заголовка, который выглядит так же, как в примере выше. Мне нужна помощь в создании стоимости, чтобы она работала с задним концом.

ответ

7

Это просто предположение, поскольку правильный ответ полностью зависит от ожидаемого сервера; но, используя другие AUTH схемы в качестве модели, заголовок будет выглядеть примерно так:

NSString *authHeader = [NSString stringWithFormat:@"token=\"%@\", nonce=\"%@\"", @"tokenHere", @"def"]; 
[myMutableRequest setValue:authHeader forHTTPHeaderField:@"Authorization"]; 

Другими словами, имя поля заголовка является «Authorization» и ее значение, разделенные запятыми пары имя = значение. Только часть вашей спецификации, которая не имеет смысла это дополнительное упоминание о «маркер», как в

... маркеров знак = ...

+0

Оказалось, что мне нужно избегайте двойных кавычек и избавляйтесь от «Аутентификация»: правильный запрос выглядит следующим образом: '[request setValue: @" Token token = \ "tokenHere \", nonce = \ "def \" "forHTTPHeaderField: @" Authorization "]; ' – ScottOBot