网络层

iOS NSURLRequest&&NSURLR

2018-09-10  本文已影响323人  天下林子

NSURLRequest.h

NSURLRequest

获取请求属性
– cachePolicy
– HTTPShouldUsePipelining
– mainDocumentURL
– timeoutInterval
– networkServiceType
– URL

获取HTTP请求属性
– allHTTPHeaderFields
– HTTPBody
– HTTPBodyStream
– HTTPMethod
– HTTPShouldHandleCookies
– valueForHTTPHeaderField:

类方法
requestWithURL:
创建并返回使用 默认缓存策略 + 默认超时时间 + 指定URL 的请求。

requestWithURL:cachePolicy:timeoutInterval:
创建并返回使用 指定缓存策略 + 指定超时时间 + 指定URL 的请求。

实例方法

allHTTPHeaderFields

allowsCellularAccess

cachePolicy

HTTPBody

HTTPBodyStream

HTTPMethod


HTTPShouldHandleCookies

HTTPShouldUsePipelining
返回在接到上一个请求的响应之前,是否需要传输数据。

initWithURL:
初始化使用 默认缓存策略 + 默认超时时间 + 指定URL 的请求。

initWithURL:cachePolicy:timeoutInterval:
初始化使用 指定缓存策略 + 指定超时时间 + 指定URL 的请求。

mainDocumentURL

networkServiceType

supportsSecureCoding
表明 NSURLRequest 是否实现了 NSSecureCoding 协议。

timeoutInterval

URL

valueForHTTPHeaderField:

NSMutableURLRequest

概述

NSMutableURLRequest 是 NSURLRequest 的子类。多个请求时,可以只创建一个可变对象,而不需要为每一个加载创建一个不可变的 NSURLRequest 对象。
NSURLSession,NSURLConnection 和 NSURLDownload 类初始化时对 NSMutableURLRequest 对象是进行的深度复制。

注意: 这个类只是封装URL请求的信息。 要真正发出请求,需要使用其他的类,比如NSURLSession、NSURLConnection。
参考:URL Loading System Programming Guide

作用

设置请求属性
– setCachePolicy:
– setMainDocumentURL:
– setNetworkServiceType:
– setTimeoutInterval:
– setURL:
– setAllowsCellularAccess:

设置HTTP具体属性
– addValue:forHTTPHeaderField:
– setAllHTTPHeaderFields:
– setHTTPBody:
– setHTTPBodyStream:
– setHTTPMethod:
– setHTTPShouldHandleCookies:
– setHTTPShouldUsePipelining:
– setValue:forHTTPHeaderField:

实例方法

addValue:forHTTPHeaderField:
向HTTP头字典中加入一个HTTP头值。

注意:NSURLConnection 和 NSURLSession 是用来处理HTTP协议的各个方面的。 因此,下面这些头不应该修改:
Authorization
Connection
Host
WWW-Authenticate
此外,如果上传的请求体的大小可以通过计算得出(比如请求体的内容是一个NSData对象),那么Content-Length这个头也是设置好了的。

setAllHTTPHeaderFields:
替换指定头字段的值。

setAllowsCellularAccess:
设置连接是否可以使用蜂窝数据(如果存在的话)

setCachePolicy:
设置缓存策略。

setHTTPBody:
设置请求体的具体值。

setHTTPBodyStream:
设置请求体的具体输入流内容。

setHTTPMethod:
设置HTTP的请求方式。

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

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

setMainDocumentURL:
设置URL的主文档。

setNetworkServiceType:
设置连接的服务类型。

setTimeoutInterval:
设置超时时间,单位秒。

通常情况下,超时时间不要设置的太短。最好是给用户提供一个取消长时间操作的方法。详细信息,参考:Designing for Real-World Networks。

setURL:

setValue:forHTTPHeaderField:
设置HTTP头字段的值。

NSURLResponse

//初始化方法

返回数据的数据类型(纯文本,视频,语音,超文本等)
@property (nullable, readonly, copy) NSString *MIMEType;

将要返回的数据的大小
@property (readonly) long long expectedContentLength;

编码的名称
@property (nullable, readonly, copy) NSString *textEncodingName;

获取服务器的文件的名称
@property (nullable, readonly, copy) NSString *suggestedFilename;

返回数据的头部信息,key-value格式
NSDictionary* allHeaderFields:

NSHTTPURLResponse

概述:
NSHTTPURLResponse 类是NSURLResponse的子类,可以访问HTTP协议的响应信息。使用HTTP URL发送请求时,无论是通过NSURLSession,NSURLConnection,还是NSURLDownload,它们的响应都是NSHTTPURLResponse 的实例。

作用:

  1. 初始化Response对象
  1. 获取HTTP响应头
  1. 获取HTTP响应状态码

实例方法:
allHeaderFields
获取所有的HTTP响应头
HTTP头是忽略大小写的。为了简化代码,头字段都使用规范的标准格式。
比如,服务器发送 content-length,将自动调整为 Content-Length。
返回的头字典,在 set 操作时,是保留大小写的,除非已经有另一种大小写格式的存在了。查询key的时候是忽略大小写的。
比如,设置的时候,使用 X-foo, 后面再设置的时候,使用了X-Foo。那么,头字典将仍然使用X-foo,但是值更新成X-Foo的值。

initWithURL:statusCode:HTTPVersion:headerFields:
初始化HTTP响应对象
url: 产生响应的url
statusCode: 返回的HTTP状态码
HTTPVersion: HTTP响应的版本。通常是 "HTTP/1.1”
headerFields: 服务器传回来的响应头的字典

上一篇下一篇

猜你喜欢

热点阅读