關(guān)于添加AFNetworking返回的數(shù)據(jù)類型

1、從AFNetworking的源碼里可以看出,默認(rèn)支持的返回數(shù)據(jù)類型如下幾個:

- (instancetype)init {
    self = [super init];
    if (!self) {
        return nil;
    }

    self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", nil];

    return self;
}

如果想要支持其他的數(shù)據(jù)類型,例如@"text/html", @"text/xml",那么,這樣添加支持類型:

@interface MyHttp : AFHTTPSessionManager

+(instancetype)sharedInstance;

@end
@implementation MyHttp

+(instancetype)sharedInstance{
    static MyHttp *myHttp = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        //URL
        myHttp = [[MyHttp alloc]initWithBaseURL:[NSURL URLWithString:xBaseUrl]];
        
        //添加返回數(shù)據(jù)的類型支持
        NSMutableSet *acceptableSet = [NSMutableSet setWithSet:myHttp.responseSerializer.acceptableContentTypes];
        [acceptableSet addObject:@"text/html"];
        myHttp.responseSerializer.acceptableContentTypes = acceptableSet;
        
    });
}

-(instancetype)initWithBaseURL:(NSURL *)url{
    self = [super initWithBaseURL:url];
    if (self) {
    }
    return self;
}
@end

成功添加了返回數(shù)據(jù)的支持類型,解析數(shù)據(jù)的時候,就可以根據(jù)接口的文檔,做相應(yīng)的處理。(一般我都是不在AFNetworking二次封裝里面做判斷,都是到業(yè)務(wù)層再去判斷,因為項目中大部分的接口都是返回json,只有一兩個接口是返回其他其他類型的數(shù)據(jù))當(dāng)然如果非要判斷數(shù)據(jù),也是可以的:

if([responseObject isKindOfClass:[NSDictionary class]]){
    NSLog(@"%@",responseObject);
 }
  //xml/html
else if([responseObject isKindOfClass:[NSData class]]){
    NSLog(@"%@",responseObject);
}

如果是網(wǎng)絡(luò)請求寫成一個單例,那么以下這種方式(告訴AFNetworking返回的數(shù)據(jù)以什么類型去解析)的類型支持就不合適了:

myHttp.responseSerializer = [AFJSONResponseSerializer serializer];
//myHttp.responseSerializer = [AFXMLParserResponseSerializer serializer];

設(shè)置了一種類型,如上,就只支持json類型。如果是返回xml,那么就會報錯。所以單例的話,還是添加支持類型比較合適,返回的時候再根據(jù)具體類型做具體處理。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容