這個類的說明中這樣寫道: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)可以通過實例化快速設置, 表單形式可以通過上面圖片封裝的方法。