概述
NSURLRequest 对象代表独立于协议的URL加载请求。
NSURLRequest
封装了加载请求的两个基本元素: URL,缓存策略。
NSURLRequest 可以通过添加 category 来支持其他的协议,使用
NSURLProtocol
的
propertyForKey:inRequest: 方法和
setProperty:forKey:inRequest: 方法,可以访问属性对象的协议值。
作用
创建请求
获取请求属性
获取HTTP请求属性
允许使用蜂窝数据
支持安全编码
类方法
requestWithURL:
创建并返回使用 默认缓存策略 + 默认超时时间 + 指定URL 的请求。
+ (id)requestWithURL:(NSURL *)theURL
- theURL: 请求的URL
- 返回值: 新建的URL请求。
默认的缓存策略是
NSURLRequestUseProtocolCachePolicy
。
默认的超时时间是 60s。
requestWithURL:cachePolicy:timeoutInterval:
创建并返回使用 指定
缓存策略 + 指定超时时间 + 指定URL 的请求。
+ (id)requestWithURL:(NSURL *)theURL
cachePolicy:(NSURLRequestCachePolicy)cachePolicy
timeoutInterval:(NSTimeInterval)timeoutInterval
- theURL: 请求的URL
- cachePolicy: 请求的缓存策略
- timeoutInterval: 请求的超时时间,以秒为单位。
- 返回值: 新建的URL请求
实例方法
allHTTPHeaderFields
- (NSDictionary *)allHTTPHeaderFields
- 返回值: 包含HTTP头所有字段的字典
allowsCellularAccess
- (BOOL)allowsCellularAccess
- 返回值: YES蜂窝数据可用,NO蜂窝数据不可用。
cachePolicy
- (NSURLRequestCachePolicy)cachePolicy
- 返回值: 该请求使用的缓存策略。
HTTPBody
- (NSData *)HTTPBody
- 返回值: 请求体。
HTTPBodyStream
- (NSInputStream *)HTTPBodyStream
- 返回值: 请求的输入流。如果未设置,则返回nil。这个流只能用来检验,其他操作都是不可靠的。
输入流在复制NSURLRequest对象时被保留,但是用NSCoding协议归档的时候将丢失。
HTTPMethod
- (NSString *)HTTPMethod
- 返回值:请求方法。 默认是“GET”
HEAD - 只传递头信息,没有请求体,也没有响应体。
GET - 查询资源
PUT - 新增资源
POST - 更新资源
DELETE - 删除资源
HTTPShouldHandleCookies
- (BOOL)HTTPShouldHandleCookies
- 返回值: YES 使用默认cookie处理,NO不使用。
默认值为YES。
HTTPShouldUsePipelining
返回在接到上一个请求的响应之前,是否需要传输数据。
- (BOOL)HTTPShouldUsePipelining
- 返回值: YES 传输,NO 不传输。
initWithURL:
初始化使用 默认缓存策略 + 默认超时时间 + 指定URL 的请求。
- (id)initWithURL:(NSURL *)theURL
initWithURL:cachePolicy:timeoutInterval:
初始化使用 指定
缓存策略 + 指定超时时间 + 指定URL 的请求。
- (id)initWithURL:(NSURL *)theURL
cachePolicy:(NSURLRequestCachePolicy)cachePolicy
timeoutInterval:(NSTimeInterval)timeoutInterval
- theURL: 请求的URL
- cachePolicy: 请求的缓存策略
- timeoutInterval: 请求的超时时间,以秒为单位。
- 返回值: 新建的URL请求
mainDocumentURL
- (NSURL *)mainDocumentURL
- 返回值: 请求对应URL的主文档。
networkServiceType
- (NSURLRequestNetworkServiceType)networkServiceType
- 返回值: 网络服务类型。
网络服务类型给操作系统提示底层通信的作用。这个提示有助于系统优化通信,确定唤醒蜂窝数据或者WIFI的速度。调节不同的参数,可以平衡电池、性能以及其他因素。
比如,进行非用户请求的下载时应该使用
NSURLNetworkServiceTypeBackground。 比如,在后台提前加载数据,这样等用户需要看时就不需要加载了。
supportsSecureCoding
表明
NSURLRequest 是否实现了
NSSecureCoding 协议。
timeoutInterval
- (NSTimeInterval)timeoutInterval
- 返回值: 请求的超时时间,单位秒。
URL
- (NSURL *)URL
valueForHTTPHeaderField:
- (NSString *)valueForHTTPHeaderField:(NSString *)field
- field: 头字段的名字。 忽略大小写。
- 返回值: 头字段的值,如果没有该字段,则返回nil。
常量
NSURLRequestCachePolicy
enum
{
NSURLRequestUseProtocolCachePolicy = 0,
NSURLRequestReloadIgnoringLocalCacheData = 1,
NSURLRequestReloadIgnoringLocalAndRemoteCacheData = 4, // Unimplemented
NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData,
NSURLRequestReturnCacheDataElseLoad = 2,
NSURLRequestReturnCacheDataDontLoad = 3,
NSURLRequestReloadRevalidatingCacheData = 5, // Unimplemented
};
typedef NSUInteger NSURLRequestCachePolicy;
NSURLRequestNetworkServiceType
enum
{
NSURLNetworkServiceTypeDefault = 0,
NSURLNetworkServiceTypeVoIP = 1,
NSURLNetworkServiceTypeVideo = 2,
NSURLNetworkServiceTypeBackground = 3,
NSURLNetworkServiceTypeVoice = 4
};
typedef NSUInteger NSURLRequestNetworkServiceType;