美文网首页
AFHTTPRequestSerializer类说明

AFHTTPRequestSerializer类说明

作者: _阿南_ | 来源:发表于2017-03-13 19:28 被阅读391次

    继承:NSObject


    遵照:AFURLRequestSerialization


    声明处:AFURLRequestSerialization.h


    概述

    AFHTTPRequestSerializer符合AFURLRequestSerialization和AFURLResponseSerialization协议,提供一个查询字符串/URL表单参数序列和默认请求报头,响应状态码和内容类型验证的基础实现。
    处理HTTP的任意请求和响应,建议使用AFHTTPRequestSerializer的子类来确保统一的默认行为。

    任务

    其他方法

    属性
    stringEncoding
    allowsCellularAccess
    cachePolicy
    HTTPShouldHandleCookies
    HTTPShouldUsePipelining
    networkServiceType
    timeoutInterval

    配置HTTP请求报头

    属性
    HTTPRequestHeaders
    方法
    + serializer
    – setValue:forHTTPHeaderField:
    – valueForHTTPHeaderField:
    – setAuthorizationHeaderFieldWithUsername:password:
    – clearAuthorizationHeader

    配置查询字符串参数序列化

    属性
    HTTPMethodsEncodingParametersInURI
    方法
    – setQueryStringSerializationWithStyle:
    – setQueryStringSerializationWithBlock:

    创建请求对象

    方法
    – requestWithMethod:URLString:parameters:error:
    – multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:error:
    – requestWithMultipartFormRequest:writingStreamContentsToFile:completionHandler:

    属性

    HTTPMethodsEncodingParametersInURI

    @property (nonatomic, strong) NSSet<NSString*> *HTTPMethodsEncodingParametersInURI

    讨论

    序列化请求的HTTP方法,将编码参数为一个查询字符串。默认设置为GET,HEAD和DELETE。

    声明处

    AFURLRequestSerialization.h

    HTTPRequestHeaders

    @property (readonly, nonatomic, strong) NSDictionary<NSString*NSString*> *HTTPRequestHeaders

    讨论

    默认HTTP报头字段值用于序列化请求。默认,包含如下

    • Accept-Language 是NSLocale +preferredLanguages的内容
    • User-Agent 是各种标识符和操作系统名称的内容
      添加和删除默认请求报头,使用setValue:forHTTPHeaderField:

    声明处

    AFURLRequestSerialization.h

    HTTPShouldHandleCookies

    @property (nonatomic, assign) BOOL HTTPShouldHandleCookies

    讨论

    创建请求是否使用默认的cookie处理。 默认为YES。

    参见

    NSMutableURLRequest @property HTTPShouldHandleCookies

    声明处

    AFURLRequestSerialization.h

    HTTPShouldUsePipelining

    @property (nonatomic, assign) BOOL HTTPShouldUsePipelining

    讨论

    在早期的传送器中接受到响应数据之前,设置是否可以创建请求进行传送数据。默认值为NO。

    参见

    NSMutableURLRequest @property HTTPShouldUsePipelining

    声明处

    AFURLRequestSerialization.h

    allowsCellularAccess

    @property (nonatomic, assign) BOOL allowsCellularAccess
    

    讨论

    是否允许时候用设备的移动网络进行创建请求(如果有的话)。默认值为YES。

    同见

    NSMutableURLRequest

    @property allowsCellularAccess

    声明处

    AFURLRequestSerialization.h

    cachePolicy

    @property (nonatomic, assign) NSURLRequestCachePolicy cachePolicy
    

    讨论

    创建请求的缓存机制。默认为NSURLRequestUseProtocolCachePolicy。

    同见

    NSMutableURLRequest
    @property cachePolicy

    声明处

    AFURLRequestSerialization.h

    networkServiceType

    讨论

    创建请求的网络服务类型。默认值为NSURLNetworkServiceTypeDefault。

    同见

    NSMutableURLRequest @property networkServiceType

    声明处

    AFURLRequestSerialization.h

    stringEncoding

    讨论

    用于序列化参数的字符串编码类型。默认值为NSUTF8StringEncoding。

    声明处

    AFURLRequestSerialization.h

    timeoutInterval

    讨论

    创建请求的超时时间,单位秒。默认的超时时间为60秒。

    同见

    NSMutableURLRequest @property timeoutInterval

    声明处

    AFURLRequestSerialization.h

    类方法

    serializer

    + (instancetype)serializer

    讨论

    根据默认配置创建和返回一个序列化实例。

    声明处

    AFURLRequestSerialization.h

    实例方法

    clearAuthorizationHeader

    - (void)clearAuthorizationHeader

    讨论

    清除所有存在的HTTP头Authorization的值。

    声明处

    AFURLRequestSerialization.h

    multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:error:

    - (NSMutableURLRequest *)multipartFormRequestWithMethod:(NSString *)method URLString:(NSString *)URLString parameters:(nullable NSDictionary<NSString*,id> *)parameters constructingBodyWithBlock:(nullable void ( ^ ) ( id<AFMultipartFormData> formData ))block error:(NSError *_Nullable __autoreleasing *)error

    讨论

    通过详细的HTTP方法和URL字符串创建一个NSMutableURLRequest对象。使用详细的参数和多部分表单块来设计一个多部分/表单数据的HTTP内容。详见http://www.w3.org/TR/html4/interact/forms.html.

    在一个HTTP内容中,多部分表单请求是自动从硬盘或内容中读取文件。作为结果的NSMutableURLRequest对象有一个HTTPBodyStream属性,所以在这个请求对象中避免设置HTTPBodyStream或HTTPBody,同时清除内容流中清除多部分数据。

    参数

    method

    请求的HTTP方法。这个参数不能为GET,或HEAD,或nil。

    URLString

    用于创建请求URL的URL字符串。

    parameters

    参数被编码和设置到请求的HTTP内容。

    block

    一个在HTTP内容中添加一个遵循AFMultipartFormData协议的对象的参数并添加数据的块。

    error

    构造请求时发生的错误。

    返回值

    一个NSMutableURlRequest对象。

    声明处

    AFURLRequestSerialization.h

    requestWithMethod:URLString:parameters:error:

    - (NSMutableURLRequest *)requestWithMethod:(NSString *)method URLString:(NSString *)URLString parameters:(nullable id)parameters error:(NSError *_Nullable __autoreleasing *)error
    

    讨论

    使用HTTP方法和URL字符串创建一个NSMutableURLRequest对象。

    参数

    method

    HTTP请求方法,如GET,POST,PUT,或DELETE。这个参数不能为nil。

    URLString

    用于创建请求URL的URL字符串。

    parameters

    GET请求时,参数设置为一个查询字符串。POST请求时,参数设置为HTTP内容。

    error

    构建请求时发生的错误。

    返回值

    一个NSMutableURLRequest对象。

    声明处

    AFURLRequestSerialization.h

    requestWithMultipartFormRequest:writingStreamContentsToFile:completionHandler:

    - (NSMutableURLRequest *)requestWithMultipartFormRequest:(NSURLRequest *)request writingStreamContentsToFile:(NSURL *)fileURL completionHandler:(nullable void ( ^ ) ( NSError *_Nullable error ))handler
    

    讨论

    创建一个NSMutableURLRequest,通过从请求移动HTTPBodyStream并异步将内容写到指定的域,在创建完成后调用完成句柄。
    在NSURLSessionTask有一个BUG,当流内容是来之HTTP体,会导致请求不会发送Content-Length头, 当与亚马逊S3服务器通讯时有一个明显的问题。作为一个工作区,这个方法根据multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:error:构建请求,或任意其他根据HTTPBodyStream创建的请求,写内容到指定的域,返回一个将HTTPBodyStream属性设置为nil的原请求的拷贝。由此,那个域也能传到AFURlSeesionManager - uploadTaskWithRequest:fromFile:progress:completionHandler:, 或拥有将请求中的HTTPBbody属性读到一个NSData中的内容。

    参数

    request

    多部分表单请求。请求的HTTPBodyStream属性必须不能设置为nil。

    fileURL

    用于写多部分表单内容的文件URL。

    handle

    一个用于执行的句柄块。

    同见

    https://github.com/AFNetworking/AFNetworking/issues/1398

    声明处

    AFURLRequestSerialization.h

    setAuthorizationHeaderFieldWithUsername:password:

    - (void)setAuthorizationHeaderFieldWithUsername:(NSString *)username password:(NSString *)password
    

    讨论

    对用户名和密码进行Base64编码后作为一个基础的验证值,设置在HTTP端创建的请求对象中的HTTP头“Authorization”域中。会重写已经存在的Authorization域。

    参数

    username

    HTTP基础验证的用户名。

    password

    HTTP基础验证的密码。

    声明处

    AFURLRequestSerialization.h

    setQueryStringSerializationWithBlock:

    - (void)setQueryStringSerializationWithBlock:(nullable NSString *( ^ ) ( NSURLRequest *request , id parameters , NSError *__autoreleasing *error ))block
    

    讨论

    设置一个自定义方法根据指定的块来询问字符串序列。

    参数

    block

    定义一个编码参数的过程到一个询问字符串之中的块。这个块返回询问字符串并有三个参数:请求,用于编码的参数,尝试为提供的请求编码参数发生的错误。

    声明处

    AFURLRequestSerialization.h

    setQueryStringSerializationWithStyle:

    - (void)setQueryStringSerializationWithStyle:(AFHTTPRequestQueryStringSerializationStyle)style
    

    讨论

    依据预定义的类型中的一个类型,设置询问字符串序列化的方法。

    参数

    style

    序列化类型。

    同见

    AFHTTPRequestQueryStringSerializationStyle

    声明处

    AFURLRequestSerialization.h

    setValue:forHTTPHeaderField:

    - (void)setValue:(nullable NSString *)value forHTTPHeaderField:(NSString *)field
    

    讨论

    HTTP端创建的请求对象中,设置HTTP头的值。如果设置的值为nil,则如果存在已经同样的HTTP头就移除。

    参数

    value

    为指定的头设置默认值,或设置为nil。

    field

    用来设置值的HTTP头。

    声明处

    AFURLRequestSerialization.h

    valueForHTTPHeaderField:

    - (nullable NSString *)valueForHTTPHeaderField:(NSString *)field
    

    讨论

    返回设置在请求序列化中的HTTP头的值。

    参数

    field

    用来恢复默认值的HTTP头。

    返回值

    为指定HTTP头设置为默认值的值,可能为nil。

    声明处

    AFURLRequestSerialization.h

    // END 这个真够长了,翻译了很久。!_!

    相关文章

      网友评论

          本文标题:AFHTTPRequestSerializer类说明

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