AFN - AFHTTPSessionManager

这个类的说明中这样写道:AFHTTPSessionManager是AFURLSessionManager的子类,为了便利使用HTTP请求。当一个baseURL提供时,用相对路径构造GET/POST等便利的方法来创建请求。对于iOS 7 or Mac OS X 10.9以后的版本,推荐继承AFHTTPSessionManager,并提供一个单例创建。

初始化方法

ps: manager创建的是无baseurl的,不是单例的形式,需要自己实现单例。baseUrl的设定可以在以后GET,POST的方法时URLString使用相对地址。

+ (instancetype)manager;

- (instancetype)initWithBaseURL:(nullable NSURL *)url;

- (instancetype)initWithBaseURL:(nullable NSURL *)url
           sessionConfiguration:(nullable NSURLSessionConfiguration *)configuration

请求和相应序列化

AFHTTPRequestSerialization来处理参数的序列化过程。默认是[AFHTTPRequestSerializer serializer]。他的子类有AFJSONRequestSerializer和AFPropertyListRequestSerializer,可快速实例化,设置Content-Type。

@property (nonatomic, strong) AFHTTPRequestSerializer  * requestSerializer;

方便方法由响应序列化程序自动验证和序列化。 默认情况下,此属性设置为“AFJSONResponseSerializer”的实例

@property (nonatomic, strong) AFHTTPResponseSerializer  * responseSerializer;

发送请求

AFN - AFHTTPSessionManager_第1张图片
111.png

ps:一般服务端语言如php、python等,以及它们的framework,都内置了自动解析常见数据格式的功能。服务端通常是根据请求头(headers)中的Content-Type字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析。所以说到POST提交数据方案,包含了Content-Type和消息主体编码方式两部分。POST请求的常用格式

  • application/x-www-form-urlencoded(默认)
  • multipart/form-data(表单)
  • application/json(json)

可以通过设置requestSerializer快速设置,requestSerializer默认是AFHTTPRequestSerializer; AFJSONRequestSerializer 和 AFPropertyListRequestSerializer(Content-Type:application/x-plist)可以通过实例化快速设置, 表单形式可以通过上面图片封装的方法。

你可能感兴趣的:(AFN - AFHTTPSessionManager)