NSMutableURLRequest Class Reference

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
此外,如果上传的请求体的大小可以通过计算得出(比如请求体的内容是一个NSData对象),那么Content-Length这个头也是设置好了的。


setAllHTTPHeaderFields:

替换指定头字段的值。
- (void)setAllHTTPHeaderFields:(NSDictionary *)headerFields
  • headerFields: 新的头字段和值的字典。 头字段必须是字符串类型的,因此,字典的键值都必须是NSString的子类。如果有一组键值其中有一个不是NSString的子类,那么这一组键值将被忽略。
注意: NSURLConnection 和  NSURLSession 是用来处理HTTP协议的各个方面的。 因此,下面这些头不应该修改:
  • Authorization
  • Connection
  • Host
  • WWW-Authenticate
此外,如果上传的请求体的大小可以通过计算得出(比如请求体的内容是一个NSData对象),那么Content-Length这个头也是设置好了的。

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应该是未打开的,请求本身会接管流的代理。
设置了这个值,会自动把 setHTTPBody:的值清空。 这两个方法是互斥的。


setHTTPMethod:

设置HTTP的请求方式。

- (void)setHTTPMethod:(NSString *)method

  • method: 请求方式。 默认是GET。

setHTTPShouldHandleCookies:

设置是否使用默认cookie处理方式

- (void)setHTTPShouldHandleCookies:(BOOL)handleCookies

  • handleCookies: YES使用默认的,NO不使用默认的。默认YES。
如果  NSMutableURLRequest 对象设置了 Cookie 头, 那么这个方法不起作用。头里设置的 Cookie会覆盖所有的cookie。


setHTTPShouldUsePipelining:

设置在接到前一个请求的响应之前,是否传输数据。

- (void)setHTTPShouldUsePipelining:(BOOL)shouldUsePipelining

  • shouldUsePipelining: YES传输,NO不传输。默认NO。


setMainDocumentURL:

设置URL的主文档。

- (void)setMainDocumentURL:(NSURL *)theURL

  • theURL: URL的主文档。可以为nil。
这个值需要合理设置。 比如,加载一个网页的时候,从最顶层的HTML文档开始加载比较合理。这个URL的cookie遵守同源策略。


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
此外,如果上传的请求体的大小可以通过计算得出(比如请求体的内容是一个NSData对象),那么Content-Length这个头也是设置好了的。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值