2016-04-26 3 views
1

При установке «Authorization» заголовок NSMutableURLRequest, ответ моего сервера заголовков не включает этот заголовок:NSMutableURLRequest авторизация Настройки заголовок

[Host] => myhost.com 
[Content-Type] => application/x-www-form-urlencoded 
[Connection] => keep-alive 
[Accept] => */* 
[User-Agent] => MyApp/1 CFNetwork/758.3.15 Darwin/15.4.0 
[Content-Length] => 327 
[Accept-Language] => en-gb 
[Accept-Encoding] => gzip, deflate 

Я прочитал документацию предлагает не устанавливать это здесь, так что, когда я должен установить заголовок авторизации на стороне клиента?

Цель моего Authorization заголовка для отправки по моей OAuth подписи и других связанных OAuth информации

ответ

2

Вы пользователя и пароль API

// Create the request 
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:0]; 

// New Create the connection 
NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration]; 

NSURLSession *session = [NSURLSession sharedSession];//sessionWithConfiguration:defaultConfigObject delegate:self delegateQueue:[NSOperationQueue mainQueue]]; 

NSURLCredential *creds = [NSURLCredential credentialWithUser:self.username password:self.password persistence:NSURLCredentialPersistenceForSession]; 

NSString *authStr = [NSString stringWithFormat:@"%@:%@",self.username,self.password];// @"username:password"; 

NSData *authData = [authStr dataUsingEncoding:NSUTF8StringEncoding]; 

NSString *authValue = [NSString stringWithFormat: @"Basic %@",[authData base64EncodedStringWithOptions:0]]; 

// Part Important 
[request setValue:authValue forHTTPHeaderField:@"Authorization"]; 

// Or Token 
NSString *authValueToken = @"OAuth UElJRFER1A5zcGkyW16T0"; 
[request setValue:authValueToken forHTTPHeaderField:@"AuthenticatedToken"];// Authenticated API 


NSString *postLength = [NSString stringWithFormat:@"327"]; 
[request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 

NSString *postLength = [NSString stringWithFormat:@"application/x-www-form-urlencoded"]; 
[request setValue:postLength forHTTPHeaderField:@"Content-Type"]; 

NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request  
    completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { 
      receivedData = [NSMutableData data]; 
      NSString* responseData = [[NSString alloc] initWithData:data encoding: NSUTF8StringEncoding]; 
      NSLog(@"%@",responseData); 
      if (error) { 
        [self handleError: error]; 
      } 
}]; 

[dataTask resume]; // <- important 

NSLog(@"Header Fields Request--->> %@",request.allHTTPHeaderFields); 
+0

Мне нужно отправить заголовок авторизации, чтобы отправить данные Oauth на мой сервер –

+0

@AdamCarter Пожалуйста, обновите свой вопрос, чтобы включить, что это относится к OAuth. – quellish

2

документация рекомендует не устанавливать его, потому что, как правило, неправильный способ сделать это. Для большей проверки подлинности вы должны создать фактический объект NSURLCredential в обработчике завершения проверки подлинности, и вы должны делать это только после того, как первая попытка доступа к ресурсу завершится с ошибкой.

К сожалению, AFAIK не поддерживает OAuth в ОС, поэтому единственное, что вы можете сделать, это указать заголовок для начала и убедиться, что вы никогда случайно не добавляли другие учетные данные для этого имени хоста (потому что тогда есть неплохая вероятность, что ваш заголовок авторизации начнет топать, если вы это сделаете).

Смежные вопросы