这个类的说明中这样写道: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 <AFURLRequestSerialization> * requestSerializer;
方便方法由响应序列化程序自动验证和序列化。 默认情况下,此属性设置为“AFJSONResponseSerializer”的实例
@property (nonatomic, strong) AFHTTPResponseSerializer <AFURLResponseSerialization> * responseSerializer;
发送请求
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)可以通过实例化快速设置, 表单形式可以通过上面图片封装的方法。