AFNetworking獲取Web同步錯(cuò)誤碼

【W(wǎng)arming】:AFNetworking 奇葩問(wèn)題旨在針對(duì)奇葩問(wèn)題提出奇葩的解法,部分驗(yàn)證并在實(shí)際中用到,但不保證有隱性問(wèn)題。

HTTP常見(jiàn)錯(cuò)誤碼對(duì)照表

AFNetworking能獲取錯(cuò)誤碼的空間是[200,300],但是如果后臺(tái)返回一個(gè)401,并且?guī)Я隋e(cuò)誤的信息呢?如果不修改AFNetworking是會(huì)返回錯(cuò)誤的,但是無(wú)法獲取跟后臺(tái)同步的錯(cuò)誤提示,這個(gè)時(shí)候就需要修改AFNetwoking的源碼了。解決的大概思路

1、修改AFNetworking獲取錯(cuò)誤碼的空間,找到AFNetworking->Serialization->AFURLResponseSerialization.m
修改init方法里面的

 self.acceptableStatusCodes = [NSIndexSet indexSetWithIndexesInRange(200,100)];

修改范圍為(200,310);

2、修改AFHTTPSessionManager里面的方法

- (NSURLSessionDataTask *)dataTaskWithHTTPMethod:(NSString *)method
                                   URLString:(NSString *)URLString
                                  parameters:(id)parameters
                              uploadProgress:(nullable void (^)(NSProgress *uploadProgress)) uploadProgress
                            downloadProgress:(nullable void (^)(NSProgress *downloadProgress)) downloadProgress
                                     success:(void (^)(NSURLSessionDataTask *, id))success
                                     failure:(void (^)(NSURLSessionDataTask *, NSError *))failure

-(NSURLSessionDataTask*)dataTaskWithRequest:uploadProgress:downloadProgress:completionHandler

中的

if(error){
  if(failure){
      failure(dataTask,error);
  }
}

屏蔽了,因?yàn)榇藭r(shí)后臺(tái)返回的都是“正確”的數(shù)據(jù),我們需要對(duì)返回的所有的數(shù)據(jù)進(jìn)行處理,當(dāng)然也可以改錯(cuò)誤返回, 如failure(void(^)(NSURLSessionDataTask*, id, NSError *))failure, 然后把response也加進(jìn)去返回

3、對(duì)返回的具體錯(cuò)誤碼進(jìn)行解析并處理
獲取錯(cuò)誤碼的方法

  NSHTTPURLResponse * response = (NSHTTPURLResponse*)task.response;
  NSInteger statusCode = response.statusCode;

如果屏蔽了就加到success里面去處理,如果沒(méi)有屏蔽而是改了failure回調(diào),則加到failure里面去處理

至此大功告成!趕快去試一下吧!

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

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

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