請(qǐng)求的數(shù)據(jù)格式抛姑,發(fā)送給服務(wù)器的格式
self.requestSerializer = [AFHTTPRequestSerializer serializer];
AFHTTPRequestSerializer //二進(jìn)制的數(shù)據(jù)格式 (默認(rèn)的)
AFJSONRequestSerializer //JSON
AFPropertyListRequestSerializer //PList
響應(yīng)的解析器(默認(rèn)直接解析JSON)
self.responseSerializer = [AFJSONResponseSerializer serializer];
AFHTTPResponseSerializer 二進(jìn)制
AFJSONResponseSerializer JSON (默認(rèn)的數(shù)據(jù)格式)
AFXMLParserResponseSerializer XML的解析器
AFImageResponseSerializer Image
AFN同樣提供了異步加載網(wǎng)絡(luò)圖片的功能
但是:不支持 GIF烈疚,只有 SDWebImage 支持
AFCompoundResponseSerializer 組合
遇到的問(wèn)題
- requestSerializer
關(guān)于 requestSerializer它就是AFNetworking參數(shù)編碼的序列化器,它一共有三種編碼格式:
AFHTTPRequestSerializer:第一種是普通的http的編碼格式也就是
mid=10&method=userInfo&dateInt=20160818,這種格式的。
AFJSONRequestSerializer:第二種也是json編碼格式的,也就是編碼成
{"mid":"11","method":"userInfo","dateInt":"20160818"}
AFPropertyListRequestSerializer:第三種沒(méi)用過(guò)浸颓,但是看介紹接編碼成pislt格式的參數(shù)
manager.requestSerializer=[AFJSONRequestSerializer serializer];
//申明請(qǐng)求的數(shù)據(jù)是json類型
manager.responseSerializer = [AFJSONResponseSerializer serializer];
//申明返回的結(jié)果是json類型
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"application/json"];
//如果接受類型不一致請(qǐng)?zhí)鎿Q一致
常遇到下面的幾種情況:
1、 服務(wù)端需要返回一段普通文本給客戶端旺拉,Content-Type="text/plain"
2 产上、服務(wù)端需要返回一段HTML代碼給客戶端 ,Content-Type="text/html"
3 蛾狗、服務(wù)端需要返回一段XML代碼給客戶端 晋涣,Content-Type="text/xml"
4 、服務(wù)端需要返回一段javascript代碼給客戶端 Content-Type="text/javascript "
5 沉桌、服務(wù)端需要返回一段json串給客戶端 Content-Type="application/json
要使用常規(guī)的AFN網(wǎng)絡(luò)訪問(wèn)
1. AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
所有的網(wǎng)絡(luò)請(qǐng)求,均有manager發(fā)起
2. 需要注意的是,默認(rèn)提交請(qǐng)求的數(shù)據(jù)是二進(jìn)制的,返回格式是JSON
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
1> 如果提交數(shù)據(jù)是JSON的,需要將請(qǐng)求格式設(shè)置為AFJSONRequestSerializer
2> 如果返回格式不是JSON的,
3. 請(qǐng)求格式
AFHTTPRequestSerializer 二進(jìn)制格式
AFJSONRequestSerializer JSON
AFPropertyListRequestSerializer PList(是一種特殊的XML,解析起來(lái)相對(duì)容易)
4. 返回格式
AFHTTPResponseSerializer 二進(jìn)制格式
AFJSONResponseSerializer JSON
AFXMLParserResponseSerializer XML,只能返回XMLParser,還需要自己通過(guò)代理方法解析
AFXMLDocumentResponseSerializer (Mac OS X)
AFPropertyListResponseSerializer PList
AFImageResponseSerializer Image
AFCompoundResponseSerializer 組合
如何將token添加到請(qǐng)求頭?
問(wèn)題一: 添加token到請(qǐng)求頭的代碼如下:
NSDictionary *dict = @{@"name" : @"小明",
@"age" :@"20"
};
//實(shí)例化AFHTTPSessionManager
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
//調(diào)出請(qǐng)求頭
manager.requestSerializer = [AFJSONRequestSerializer serializer];
//將token封裝入請(qǐng)求頭
[manager.requestSerializer setValue:TOKEN forHTTPHeaderField:@"token-id"];
網(wǎng)絡(luò)鏈接
#pragma mark - 檢測(cè)網(wǎng)絡(luò)連接
- (void)reach
{
/**
AFNetworkReachabilityStatusUnknown = -1, // 未知
AFNetworkReachabilityStatusNotReachable = 0, // 無(wú)連接
AFNetworkReachabilityStatusReachableViaWWAN = 1, // 3G 花錢(qián)
AFNetworkReachabilityStatusReachableViaWiFi = 2, // 局域網(wǎng)絡(luò),不花錢(qián)
*/
// 如果要檢測(cè)網(wǎng)絡(luò)狀態(tài)的變化,必須用檢測(cè)管理器的單例的startMonitoring
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
// 檢測(cè)網(wǎng)絡(luò)連接的單例,網(wǎng)絡(luò)變化時(shí)的回調(diào)方法
[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
NSLog(@"%d", status);
}];
}