【问题标题】:Set configuration of NSURLSession sharedSession设置 NSURLSession sharedSession 的配置
【发布时间】:2014-12-05 09:39:33
【问题描述】:

我需要将自定义用户代理字符串设置为 NSURLSession 的 sharedSession。即每当我调用[NSURLSession sharedSession] 时,它默认会包含我的自定义配置,我不需要每次都设置它。

我可以将配置设置为会话,

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

但我找不到如何将配置设置为可以在代码中随时使用的sharedSession

【问题讨论】:

  • 我也遇到同样的情况,新用户登录后我需要更改配置中的一些访问令牌。所以你有没有找到任何改变的方法,是的,我读了答案。

标签: ios nsurlsession


【解决方案1】:

那是因为你不能修改 sharedSession。想象一下,sharedSession 是 iOS 设备 sharedSession 并被所有其他应用程序和框架使用。它是不可配置的,对吗?关于它的documentation 声明:

共享会话使用当前设置的全局 NSURLCache, NSHTTPCookieStorage 和 NSURLCredentialStorage 对象是基于 在默认配置上。

您要做的是定义自定义配置,这意味着您需要自己的会话对象和自己的配置。这就是为什么有一个特定的构造函数可以为您提供所需的:

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

为简洁起见,您可以使用[NSURLSessionConfiguration defaultSessionConfiguration] 创建基本配置,然后在此处设置其他标头。

当然,您将负责保留会话等

【讨论】:

    【解决方案2】:

    根据@Daniel Galasko: 我添加了以下内容:(只是更新为它的 swift 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。如果您觉得我的回答有用,请投票支持他的回答。

    【讨论】:

      【解决方案3】:

      我也陷入了这个问题,我不得不更改 httpHeaders 中的授权。丹尼尔的回答是对的,一旦设置,我们就无法更改 NSURLSession 及其配置。解决方案是在 NSMutableURLRequest 对象中设置标头,如

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

      回答它可能会对某人有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-06
        • 1970-01-01
        • 2020-02-25
        • 2015-02-02
        • 2021-06-26
        • 1970-01-01
        • 2015-02-28
        • 1970-01-01
        相关资源
        最近更新 更多