2014-12-05 55 views
5

我需要將自定義用戶代理字符串設置爲NSURLSession的sharedSession。即每當我打電話給[NSURLSession sharedSession]時,它將默認包含我的自定義配置,我不需要每次都設置它。設置NSURLSession sharedSession的配置

我可以設置配置會話,

NSURLSession * session = [NSURLSession sharedSession]; 
NSString * userAgent = @"My String"; 
session.configuration.HTTPAdditionalHeaders = @{@"User-Agent": userAgent}; 

但我找不到如何配置設置爲sharedSession可以隨時在代碼中使用。

+0

我處於同樣的情況,我需要在新用戶登錄後更改配置中的某些訪問令牌。因此,您是否找到任何可以更改的方法,並且是的,我閱讀了答案。 – 2016-03-09 13:50:41

回答

11

那是因爲你不能修改sh​​aredSession。想象一下,sharedSession是iOS設備的sharedSession,並被所有其他應用和框架使用。有意義的是它是不可配置的權利?該documentation它指出:

共享會話使用當前設置的全球NSURLCache, NSHTTPCookieStorage和NSURLCredentialStorage對象和基於 的默認配置。

你想要做的是定義一個自定義配置,這意味着你將需要你自己的會話對象和自己的配置。這就是爲什麼有特定的構造給你所需要的:

+ (NSURLSession *)sessionWithConfiguration:(NSURLSessionConfiguration *)configuration 
            delegate:(id<NSURLSessionDelegate>)delegate 
          delegateQueue:(NSOperationQueue *)queue 

爲了簡便起見,您可以使用[NSURLSessionConfiguration defaultSessionConfiguration]創建一個基本配置,然後設置附加頭那裏。

當然,你將負責保持該會話等

1

我也卡在這個問題上,我不得不改變授權在httpHeaders。丹尼爾答案是正確的,我們不能改變NSURLSession及其配置一旦設置。解決方法是在NSMutableURLRequest對象中設置標題,如

var request = NSMutableURLRequest() 
request.setValue("YourAccessToken", forHTTPHeaderField: "Authorization") 

回答:可能有人幫忙。

1

作爲每@Daniel Galasko: 我加入以下:(剛剛更新作爲其迅速2.3代碼)再次

let sessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration() 
let additionalHeadersDict = ["User-Agent": "User name that you want", 
          "Accept-Language":"lamguages", 
          "Accept-Encoding": "Encoding type" ] 
sessionConfiguration.HTTPAdditionalHeaders = additionalHeadersDict 

由於@Daniel Galasko。如果你覺得我的有用,請回答他的答案。