美文网首页
AFN请求参数,响应数据的序列化过程<二>

AFN请求参数,响应数据的序列化过程<二>

作者: 风雨啸青锋 | 来源:发表于2016-03-03 20:56 被阅读1030次

    昨天阐述了AFN数据请求及获取到数据后如何传给completionHandler的过程,今天来看下发送请求的时候NSURLRequest是如何将URL 和 parm包装到一起的

    Serialize序列化

    序列化的过程就是将url, parm,HTTPRequestHeaders 包装成一个请求的过程, AFN中序列化主要有两种AFURLRequestSerialization<请求>,AFURLResponseSerialization<响应>

    AFHTTPSessionManager在初使化baseURL的时候就设置了requestSerializer,responseSerializer

    AFHTTPRequestSerializer实现了  协议AFURLRequestSerialization中的方法,这个方法就是去 拆解传入的NSDictionary , 生成NSMutableURLRequest, 将参数setHTTPBody,将生成的NSMutableURLRequest 返回, NSURLSession根据返回的request生成加载数据的任务

    序列化有三个类,AFHTTPRequestSerializer<父类>,AFJSONRequestSerializer<子类>,AFPropertyListRequestSerializer<子类>, 它们 都实现了AFURLRequestSerialization协议中的序列化方法,不同之处在于 使用Content-type来指定不同格式的请求信息

    特别要指出的是AFHTTPRequestSerializer 把参数序列化的过程 city=1&version=2002,  使用AFQueryStringFromParametersWithEncoding 用的很是巧妙, 主要仔细看下AFQueryStringPair这个类,将key=value对应起来。

    响应的序列化

    同样的当NSURLSession获取到数据后,在代理方法中[self.mutableData appendData:data], 当整个数据获取完以后,在最后的代理方法didCompleteWithError中 将返回的NSData序列化为id 类型的responseObject,返回给completionHandler

    响应的序列化有多个类,至于用哪个类来序列化获取到的NSData, 要看AFHTTPSessionManager初使化的时候设置的responseSerializer 是哪一个

    相关文章

      网友评论

          本文标题:AFN请求参数,响应数据的序列化过程<二>

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