美文网首页iOS
NSURLResponse & NSHTTPURLRes

NSURLResponse & NSHTTPURLRes

作者: AppleTTT | 来源:发表于2017-06-13 15:49 被阅读117次

    NSURLResponse & NSHTTPURLResponse

    Overview

    NSURLResponse类以独立于协议和URL scheme的方式将相关联URL加载请求的响应元数据的封装。

    相关的NSHTTPURLResponse类是NSURLResponse的常用子类,其对象表示对HTTP URL加载请求的响应,并存储其他特定于协议的信息,例如响应头。 无论何时发出HTTP请求,你将返回的NSURLResponse对象实际上是NSHTTPURLResponse类的一个实例。

    NSURLResponse对象不包含表示URL返回内容的实际字节。 相反,这些数据是在通过代理方法或者是请求完成的回调中;

    Symbols

    Creating a response

    • - (instancetype)initWithURL:(NSURL *)URL MIMEType:(NSString *)MIMEType expectedContentLength:(NSInteger)length textEncodingName:(NSString *)name;

      使用给定的URL,MIME类型,长度和文本编码设置来初始化一个NSURLResponse对象。

      MIMEType:(Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准;MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据(具体信息可以参考MIME 参考手册)。
      length:预期内容长度。如果预期长度未确定,此值应为-1
      name:文本编码名称。 该值可能为nil。

    Getting the response properties

    • @property(readonly) long long expectedContentLength

      响应内容的预期长度。
      如果无法确定长度,则此属性的值为NSURLResponseUnknownLength。

    一些协议实现将内容长度报告为响应的一部分,但并不是所有协议都保证传送该数据量。 客户应该准备好处理或多或少的数据。


    • @property(readonly, copy) NSString *suggestedFilename

      响应数据的建议文件名。

      访问此属性尝试使用以下信息按顺序生成文件名:

        1. 使用内容处理标头指定的文件名;
        2. URL的最后一个路径组件;
        3. 网址的主机;
      

      如果无法将URL的主机转换为有效的文件名,则使用文件名“unknown”。
      在大多数情况下,此属性根据MIMEType追加正确的文件扩展名。 访问此属性始终返回有效的文件名,无论资源是否保存到磁盘。


    • @property(readonly, copy) NSString *MIMEType

      MIME类型通常由响应的源代码提供。 但是,如果可以确定响应的来源不正确地报告信息,那么可以通过协议实现来改变或更正该值。

      如果响应的源代码不提供MIME类型,则可以尝试猜测MIME类型。


    • @property(readonly, copy) NSURL *URL

      响应的URL;

    Constants

    • NSURLResponseUnknownLength

      当从服务器接收数据之前无法确定响应长度时返回。 例如,当服务器HTTP响应不包含Content-Length头时,返回NSURLResponseUnknownLength。

    NSHTTPURLResponse

    Overview

    NSHTTPURLResponse类是NSURLResponse的子类,它提供了访问特定于HTTP协议响应的信息的方法。 每当您进行HTTP URL加载请求时,从NSURLSession,NSURLConnection或NSURLDownload类返回的任何响应对象都是NSHTTPURLResponse类的实例。

    Symbols

    Initializing a Response Object

    • - (instancetype)initWithURL:(NSURL *)url statusCode:(NSInteger)statusCode HTTPVersion:(NSString *)HTTPVersion headerFields:(NSDictionary<NSString *,NSString *> *)headerFields;

      初始化具有状态码,协议版本和响应头的HTTP URL响应对象。

    Getting HTTP Response Headers

    • @property(readonly, copy) NSDictionary *allHeaderFields

      包含作为服务器响应一部分接收的所有HTTP头域的字典。通过检查此字典,客户端可以看到HTTP服务器返回的“raw”头信息。

      该字典中的键是从服务器接收的头字段名称。有关常用HTTP头部字段的列表,请参阅RFC 2616

      HTTP标头不区分大小写。为了简化代码,某些标题字段名称被标准化为标准格式。例如,如果服务器发送内容长度头,则会自动调整为Content-Length。

      返回的标题字典被配置为在设置操作期间进行案例保留(除非key已经存在不同的情况),并且在查找key时不区分大小写。
      例如,如果你设置标题X-foo,然后设置标题X-Foo,则字典的键将是X-foo,但该值将从X-Foo标题中获取。

    Getting Response Status Code

    • + (NSString *)localizedStringForStatusCode:(NSInteger)statusCode

      返回与指定的HTTP状态代码对应的本地化字符串。


    • @property(readonly) NSInteger statusCode

      调用者的HTTP状态码;具体详见RFC 2616

    相关文章

      网友评论

        本文标题:NSURLResponse & NSHTTPURLRes

        本文链接:https://www.haomeiwen.com/subject/smgdqxtx.html