NSURLSessionConfiguration API详解(转载)

一、NSURLSessionConfiguration的描述

NSURLSessionConfiguration为NSURLSession配置一些请求所需要的策略。如:超时、缓存策略、链接需求的。

NSURLSession会拷贝configuration。所以session一旦初始化结束就不会再更改configuration。除非初始化一个session。

重要:如果NSURLRequest中也做了一些指定。session也会遵循NSURLRequest的限定,但是如果configuration有更加严格的限定,仍以configuration为主。

二、defaultSessionConfiguration

默认配置使用的是持久化的硬盘缓存,存储证书到用户钥匙链。存储cookie到shareCookie。

标注:如果想要移植原来基于NSURLConnect的代码到NSURLSession,可使用该默认配置,然后再根据需要定制该默认配置。

三、ephemeralSessionConfiguration

返回一个不适用永久持存cookie、证书、缓存的配置,最佳优化数据传输。

标注:当程序作废session时,所有的ephemeral session 数据会立即清除。此外,如果你的程序处于暂停状态,内存数据可能不会立即清除,但是会在程序终止或者收到内存警告或者内存压力时立即清除。

四、backgroundSessionConfigurationWithIdentifier

生成一个可以上传下载HTTP和HTTPS的后台任务(程序在后台运行)。

在后台时,将网络传输交给系统的单独的一个进程。

重要:identifier 是configuration的唯一标示,不能为空或nil.

工作状态:

如果程序是被系统正常终止的和重新启动,可以使用同一个identifier创建configuration和session,并且能恢复终止时的传输状态。

如果程序是被用户在手动退出的,session会取消所有的后台任务,届时不能再唤醒application,如果想要再次开始传输,必须用户手动开启application。

属性介绍:

@property(readonly, copy) NSString *identifier

如果在后台任务正在传输时程序退出,可以使用这个identifier在程序重新启动是创建一个新的configuration和session关联之前传输。

@property(copy) NSDictionary *HTTPAdditionalHeaders

默认为空,NSURLRequest附件的请求头。这个属性会给所有使用该configuration的session生成的tasks中的NSURLRequest添加额外的请求头。

重要:不要修改一下请求头

Authorization

Connection

Host

WWW-Authenticate

如果这里边添加的请求头跟NSURLRequest中重复了,侧优先使用NSURLRequest中的头。

例如 

configuration.HTTPAdditionalHeaders = @{

@"Accept": @"application/json",

@"Accept-Language": @"en",

@"User-Agent": @"iPhone"  //告诉服务器是手机客户端

};

@property NSURLRequestNetworkServiceType networkServiceType

指定网络传输类型。精切指出传输类型,可以让系统快速响应,提高传输质量,延长电池寿命等。

enum{

NSURLNetworkServiceTypeDefault

=

0,

普通网络传输,默认使用这个

NSURLNetworkServiceTypeVoIP

=

1,

网络语音通信传输,只能在VoIP使用

NSURLNetworkServiceTypeVideo

=

2,影像传输

NSURLNetworkServiceTypeBackground

=

3,网络后台传输,优先级不高时可使用。对用户不需要的网络操作可使用

NSURLNetworkServiceTypeVoice

=

4

语音传输};typedef

NSUInteger

NSURLRequestNetworkServiceType;

@property BOOL allowsCellularAccess

是否使用蜂窝网络,默认是yes.

@property NSTimeInterval timeoutIntervalForRequest

给request指定每次接收数据超时间隔,如果下一次接受新数据用时超过该值,则发送一个请求超时给该request。默认为60s

@property NSTimeInterval timeoutIntervalForResource

给指定resource设定一个超时时间,resource需要在时间到达之前完成。默认是7天。

@property(copy) NSString *sharedContainerIdentifier

如果要为app的插件提供session,需要给这个值赋值

@property NSHTTPCookieAcceptPolicy HTTPCookieAcceptPolicy

默认值是NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain,如果想更多的cookie控制,可以使用NSHTTPCookieAcceptPolicyNever,配合allHeaderFields 跟NSHTTPCookie中方法cookiesWithResponseHeaderFields:forURL:提取cookie。

typedef

enum

{

NSHTTPCookieAcceptPolicyAlways,

NSHTTPCookieAcceptPolicyNever,

NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain}

NSHTTPCookieAcceptPolicy;

@property(retain) NSHTTPCookieStorage *HTTPCookieStorage

存储cookie,清除存储,直接set为nil即可。

对于默认和后台的session,使用sharedHTTPCookieStorage。

对于短暂的session,cookie仅仅储存到内存,session失效时会自动清除。

@property BOOL HTTPShouldSetCookies

默认为yes,是否提供来自shareCookieStorge的cookie,如果想要自己提供cookie,可以使用HTTPAdditionalHeaders来提供。

@property(retain) NSURLCredentialStorage *URLCredentialStorage

证书存储,如果不使用,可set为nil.

默认和后台session,默认使用的sharedCredentialStorage.

短暂的session使用一个私有存储在内存中。session失效会自动清除。

@property(retain) NSURLCache *URLCache

缓存NSURLRequest的response。

默认的configuration,默认值的是sharedURLCache。

后台的configuration,默认值是nil

短暂的configuration,默认一个私有的cache于内存,session失效,cache自动清除。

@property NSURLRequestCachePolicy requestCachePolicy

缓存策略,默认值是NSURLRequestUseProtocolCachePolicy

enum{

NSURLRequestUseProtocolCachePolicy

=

0,

NSURLRequestReloadIgnoringLocalCacheData

=

1,不理会cache

NSURLRequestReloadIgnoringLocalAndRemoteCacheData

=

4,

//

Unimplemented NSURLRequestReloadIgnoringCacheData

=

NSURLRequestReloadIgnoringLocalCacheData,

不理会cache

NSURLRequestReturnCacheDataElseLoad

=

2,返回cache,未命中则拉去远程数据

NSURLRequestReturnCacheDataDontLoad

=

3,拉去数据,未命中,不做操作

NSURLRequestReloadRevalidatingCacheData

=

5

//

Unimplemented };typedef

NSUInteger

NSURLRequestCachePolicy;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,165评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,720评论 1 298
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,849评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,245评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,596评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,747评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,977评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,708评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,448评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,657评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,141评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,493评论 3 258
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,153评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,890评论 0 198
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,799评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,685评论 2 272

推荐阅读更多精彩内容