接收數(shù)據(jù)類型
現(xiàn)在客戶端開發(fā)中接收后臺返回的數(shù)據(jù)形式最常用的就是JSON數(shù)據(jù),我們在使用AFNetworking這個框架在請求數(shù)據(jù)的時候可以設(shè)置接收數(shù)據(jù)類型撇贺。
如果不設(shè)置蜓陌,且后臺返回的二進制,默認接收到的數(shù)據(jù)是NSData類型均芽,即二進制數(shù)據(jù)倚评,我們要想使用它需要將其轉(zhuǎn)成JSON類型的數(shù)據(jù)然后使用字典(NSDictionary)(一般都是字典)去接收浦徊。我們也可以設(shè)置接收的數(shù)據(jù)類型,將接收的數(shù)據(jù)類型設(shè)置成JSON類型天梧,那么我們就可以直接用字典去接收返回的數(shù)據(jù)盔性。
設(shè)置代碼:
manager.responseSerializer = [AFJSONResponseSerializer serializer]
manager是AFHTTPSessionManager的一個實例。
2019.4.3補充:
[AFHTTPResponseSerializer serializer]和[AFJSONResponseSerializer serializer]的區(qū)別:
如果使用前者的話呢岗,那么返回的JSON數(shù)據(jù)是NSData類型需要我們再手動將NSData數(shù)據(jù)轉(zhuǎn)成OC中的字典或數(shù)組冕香,轉(zhuǎn)換代碼:
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:responseObject options:kNilOptions error:&error];
如果使用后者的話,那么AFNetworking已經(jīng)將NSData數(shù)據(jù)轉(zhuǎn)成了OC中的字典或數(shù)組后豫,我們可以直接使用字典或數(shù)組去接收悉尾。
我們還可以將NSData類型的數(shù)據(jù)直接轉(zhuǎn)成JSON字符串,代碼:
NSString * str = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]; // 可轉(zhuǎn)成JSON字符串
請求參數(shù)數(shù)據(jù)類型
同樣是使用AFNetworking進行數(shù)據(jù)請求挫酿,我們在給后臺發(fā)送數(shù)據(jù)的時候构眯,可以對請求參數(shù)的數(shù)據(jù)類型進行設(shè)置。默認給后臺傳的NSData類型數(shù)據(jù)早龟,即二進制數(shù)據(jù)惫霸。同樣我們可以將上傳的數(shù)據(jù)類型設(shè)置成后臺需要的JSON類型猫缭。
設(shè)置代碼:
manager.requestSerializer = [AFJSONRequestSerializer serializer]
我們?nèi)绾稳ピO(shè)置請求參數(shù)的數(shù)據(jù)類型需要看后臺需要什么類型的數(shù)據(jù),如果兩端數(shù)據(jù)類型不統(tǒng)一壹店,請求是無法成功的猜丹。
補充一張圖:
2019.3.5補充
我們在postman上可以看到POST請求的body體內(nèi)的數(shù)據(jù)類型有四種:form-data、x-www-form-urlencoded硅卢、raw射窒、binary
form-data表示既可以上傳鍵值對也可以上傳文件。
x-www-form-urlencoded表示會將表單內(nèi)的數(shù)據(jù)轉(zhuǎn)換成鍵值對将塑。
raw
raw表示可以上傳任意類型的文本脉顿,包括Text、json抬旺、xml弊予、html。
binary表示只可以上傳二進制數(shù)據(jù)开财,通常用來上傳文件。
****本篇文章到這里就結(jié)束了误褪,愿大家加班不多工資多责鳍,男同胞都有女朋友,女同胞都有男朋友兽间。??***