NSMutableURLRequest Class Reference
概述
NSMutableURLRequest 是
NSURLRequest 的子类。多个请求时,可以只创建一个可变对象,而不需要为每一个加载创建一个不可变的
NSURLRequest 对象。
NSURLSession,NSURLConnection 和 NSURLDownload 类初始化时对
NSMutableURLRequest 对象是进行的深度复制。
注意: 这个类只是封装URL请求的信息。 要真正发出请求,需要使用其他的类,比如NSURLSession、NSURLConnection。
作用
设置请求属性
设置HTTP具体属性
实例方法
addValue:forHTTPHeaderField:
向HTTP头字典中加入一个HTTP头值。
- (void)addValue:(NSString *)value forHTTPHeaderField:(NSString *)field
- value: 头字段的值
- field: 头字段的名字。为了跟HTTP RFC保持一致,这里头字段的名字忽略大小写。
这个方法可以向头字段中增加值。 如果指定头字段已经有值了,那么新的值将会被添加到原有的值后面。中间加上合适的分隔符。 在HTTP中,分隔符是逗号。
注意:
NSURLConnection 和
NSURLSession 是用来处理HTTP协议的各个方面的。 因此,下面这些头不应该修改:
- Authorization
- Connection
- Host
- WWW-Authenticate
setAllHTTPHeaderFields:
替换指定头字段的值。
- (void)setAllHTTPHeaderFields:(NSDictionary *)headerFields
- headerFields: 新的头字段和值的字典。 头字段必须是字符串类型的,因此,字典的键值都必须是NSString的子类。如果有一组键值其中有一个不是NSString的子类,那么这一组键值将被忽略。
注意:
NSURLConnection 和
NSURLSession 是用来处理HTTP协议的各个方面的。 因此,下面这些头不应该修改:
- Authorization
- Connection
- Host
- WWW-Authenticate
setAllowsCellularAccess:
设置连接是否可以使用蜂窝数据(如果存在的话)
- (void)setAllowsCellularAccess:(BOOL)allow
- allow: YES可以使用,NO不能使用。 默认是YES。
setCachePolicy:
设置缓存策略。
- (void)setCachePolicy:(NSURLRequestCachePolicy)policy
- policy: 新的缓存策略。
setHTTPBody:
设置请求体的具体值。
- (void)setHTTPBody:(NSData *)data
- data: 新的请求体。这个方法会修改请求的信息体,就像HTTP Post请求中的一样。
设置了这个值,会自动把setHTTPBodyStream:的值清空。 这两个方法是互斥的。
setHTTPBodyStream:
设置请求体的具体输入流内容。
- (void)setHTTPBodyStream:(NSInputStream *)inputStream
- inputStream: 请求体的输入流。流的整个内容都是请求体,就像HTTP Post请求中的一样。
- inputStream应该是未打开的,请求本身会接管流的代理。
setHTTPMethod:
设置HTTP的请求方式。
- (void)setHTTPMethod:(NSString *)method
- method: 请求方式。 默认是GET。
setHTTPShouldHandleCookies:
设置是否使用默认cookie处理方式
- (void)setHTTPShouldHandleCookies:(BOOL)handleCookies
- handleCookies: YES使用默认的,NO不使用默认的。默认YES。
setHTTPShouldUsePipelining:
设置在接到前一个请求的响应之前,是否传输数据。
- (void)setHTTPShouldUsePipelining:(BOOL)shouldUsePipelining
- shouldUsePipelining: YES传输,NO不传输。默认NO。
setMainDocumentURL:
设置URL的主文档。
- (void)setMainDocumentURL:(NSURL *)theURL
- theURL: URL的主文档。可以为nil。
setNetworkServiceType:
设置连接的服务类型。
- (void)setNetworkServiceType:(NSURLRequestNetworkServiceType)networkServiceType
- networkServiceType: 网络服务类型。
setTimeoutInterval:
设置超时时间,单位秒。
- (void)setTimeoutInterval:(NSTimeInterval)timeoutInterval
- timeoutInterval: 超时时间,单位秒。默认60s。
注意: iOS6之前,最小的超时时间(也是默认的超时时间)是240s。
通常情况下,超时时间不要设置的太短。最好是给用户提供一个取消长时间操作的方法。详细信息,参考:Designing for Real-World Networks。
setURL:
- (void)setURL:(NSURL *)theURL
setValue:forHTTPHeaderField:
设置HTTP头字段的值。
- (void)setValue:(NSString *)value forHTTPHeaderField:(NSString *)field
- value: 头字段的值。覆盖原来的值。
- field:头字段的名字。 忽略大小写。
注意:
NSURLConnection 和
NSURLSession 是用来处理HTTP协议的各个方面的。 因此,下面这些头不应该修改:
- Authorization
- Connection
- Host
- WWW-Authenticate