出現(xiàn)Error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost."錯誤

網(wǎng)絡(luò)請求af直接報錯code=-1005問題總結(jié)

方法一

將報錯的接口記錄下來重新請求一次,在failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) block回調(diào)中添加以下代碼

if (error.code == -1005) {? ? ? ? ? ? ? ? ? ? ? ?

if (self.code_1005_method_count_dic == nil) {? ? ? ? ? ? ? ? ? ? ? ? ? ?

self.code_1005_method_count_dic = [[NSMutableDictionary alloc] init];? ? ? ? ? ? ? ? ? ? ? ? ?

? [self.code_1005_method_count_dic setObject:@(1) forKey:REPLACE_NIL_OBJECT(action)];? ? ? ? ? ?

? ? ? ? ? ? }else {? ? ? ? ? ? ? ? ? ? ? ? ? ?

int count =? [self.code_1005_method_count_dic[action] intValue];? ? ? ? ? ? ? ? ? ? ? ?

? ? if (count >= 5) {? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? DLog(@"超過5次未成功接口action=%@",action)? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? responseBlock(@{});? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? return ;? ? ? ? ? ? ? ? ?

? ? ? ? ? }? ? ? ? ? ? ? ? ? ?

? ? }?? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ?

? dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? dispatch_group_t downloadGroup = dispatch_group_create();?? ? ? ? ? ? ? ? ? ? ? ? ? ?

dispatch_group_enter(downloadGroup);?? ? ? ? ? ? ? ? ? ? ? ?

? ? dispatch_group_wait(downloadGroup, dispatch_time(DISPATCH_TIME_NOW, 3000000000)); // Wait 5 seconds before trying again.? ? ? ? ? ? ? ? ? ? ? ? ? ? ?dispatch_group_leave(downloadGroup);?? ? ? ? ? ? ?

? ? ? ? ? ? ? dispatch_async(dispatch_get_main_queue(), ^{? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? //重新請求的方法?? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? [self reset1005requestWithAction:action Param:param OnFinished:responseBlock];?? ? ? ? ? ?

? ? ? ? ? ? ? ? });??

? ? ? ? ? ? ? ? ? ? ? });?? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ?

? ? ? DLog(@"當(dāng)前接口action=%@連接丟失重新發(fā)起",action)? ? ? ? ? ? ? ? ? ?

? ? return;? ? ? ? ? ? ?

? ? ? }

方法二

通過多次測試驗(yàn)證,發(fā)現(xiàn)將APP與服務(wù)端的長鏈接關(guān)閉后,該問題得到解決;因此我們需要在網(wǎng)絡(luò)請求頭里對connection字段進(jìn)行處理,該字段默認(rèn)為keep-live保持長鏈接,修改如下
[self.manager.requestSerializer setValue:@"close" forHTTPHeaderField:@"Connection"];

以上作為該次問題記錄,網(wǎng)上找了很久,多數(shù)為第一種解決辦法,第二種方法目前測試能一次性解決不再報錯-1005,暫未發(fā)現(xiàn)有其他影響

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

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

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