我可以在创建 NSURLSession 后更新其配置中的 cookie 吗?

Posted

技术标签:

【中文标题】我可以在创建 NSURLSession 后更新其配置中的 cookie 吗?【英文标题】:Can I update cookies in the configuration of a NSURLSession after its creation? 【发布时间】:2014-10-17 09:49:42 【问题描述】:

我可以在创建会话后更新 NSURLSession 配置中的 cookie 吗?

我使用此代码更新 cookie,但它似乎不起作用。

self.session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:nil];
self.session.configuration.HTTPShouldSetCookies = NO;
self.session.configuration.HTTPCookieAcceptPolicy = NSHTTPCookieAcceptPolicyAlways;
self.session.configuration.HTTPAdditionalHeaders = [NSHTTPCookie requestHeaderFieldsWithCookies:cookiesArray];

谢谢,

【问题讨论】:

【参考方案1】:

不,您不能,您必须在创建会话之前创建配置,来自 Apple 文档:

在使用 NSURLSessionConfiguration 对象初始化会话对象之前,适当地配置它很重要。会话对象会复制您提供的配置设置并使用这些设置来配置会话。配置完成后,会话对象会忽略您对 NSURLSessionConfiguration 对象所做的任何更改。如果您需要修改传输策略,则必须更新会话配置对象并使用它来创建新的 NSURLSession 对象。

https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSURLSessionConfiguration_class/index.html

例如

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
configuration.HTTPShouldSetCookies = NO;
configuration.HTTPCookieAcceptPolicy = NSHTTPCookieAcceptPolicyAlways;
configuration.HTTPAdditionalHeaders = [NSHTTPCookie requestHeaderFieldsWithCookies:cookiesArray];

NSURLSession *session = [NSURLSession initWithSessionConfiguration:configuration];

【讨论】:

以上是关于我可以在创建 NSURLSession 后更新其配置中的 cookie 吗?的主要内容,如果未能解决你的问题,请参考以下文章

NSURLSession 下载任务 - 进度条问题

NSurlSession - 下载许多文件

应用重启后监控 NSURLSession

NSURLSession downloadTaskWithResumeData 在重新启动应用程序后给出错误

有没有办法检索现有的 NSUrlSession/取消其任务?

从 NSURLSession completionHandler 返回数据