iOS NSURLErrorDomain Code=-999
iOS NSURLErrorDomain Code=-999
前言
今天有一個線上bug,是分配給提供H5的團隊的,但是後臺查不出來原因。於是讓前端iOS幫忙查一查原因。
今天,交給我來幫忙查原因,但是問題在網路好的狀態下並不必現,很難去定位問題的根本原因。最後只能到測試旁邊連線測試專用的慢網環境,然後才能必現。
剛進入介面時是載入一個H5頁面,當點選H5頁面上的某個按鈕的時候,會通過webview攔截到scheme,然後去走介面請求資料,得到資料後再載入H5頁面。此時,走了webview載入失敗的回撥。
加斷點,打印出來的error資訊是:
Error Domain=NSURLErrorDomain Code=-999 “The operationcouldn’t becompleted.
然後,筆者進入NSURLError.h中檢視-999代表什麼對應的key是什麼:
NS_ENUM(NSInteger)
{
NSURLErrorUnknown = -1,
NSURLErrorCancelled = -999,
NSURLErrorBadURL = -1000,
NSURLErrorTimedOut = -1001,
NSURLErrorUnsupportedURL = -1002,
NSURLErrorCannotFindHost = -1003,
NSURLErrorCannotConnectToHost = -1004,
NSURLErrorNetworkConnectionLost = -1005,
NSURLErrorDNSLookupFailed = -1006,
NSURLErrorHTTPTooManyRedirects = -1007,
NSURLErrorResourceUnavailable = -1008,
NSURLErrorNotConnectedToInternet = -1009 ,
NSURLErrorRedirectToNonExistentLocation = -1010,
NSURLErrorBadServerResponse = -1011,
NSURLErrorUserCancelledAuthentication = -1012,
NSURLErrorUserAuthenticationRequired = -1013,
NSURLErrorZeroByteResource = -1014,
NSURLErrorCannotDecodeRawData = -1015,
NSURLErrorCannotDecodeContentData = -1016,
NSURLErrorCannotParseResponse = -1017,
NSURLErrorAppTransportSecurityRequiresSecureConnection NS_ENUM_AVAILABLE(10_11, 9_0) = -1022,
NSURLErrorFileDoesNotExist = -1100,
NSURLErrorFileIsDirectory = -1101,
NSURLErrorNoPermissionsToReadFile = -1102,
NSURLErrorDataLengthExceedsMaximum NS_ENUM_AVAILABLE(10_5, 2_0) = -1103,
// SSL errors
NSURLErrorSecureConnectionFailed = -1200,
NSURLErrorServerCertificateHasBadDate = -1201,
NSURLErrorServerCertificateUntrusted = -1202,
NSURLErrorServerCertificateHasUnknownRoot = -1203,
NSURLErrorServerCertificateNotYetValid = -1204,
NSURLErrorClientCertificateRejected = -1205,
NSURLErrorClientCertificateRequired = -1206,
NSURLErrorCannotLoadFromNetwork = -2000,
// Download and file I/O errors
NSURLErrorCannotCreateFile = -3000,
NSURLErrorCannotOpenFile = -3001,
NSURLErrorCannotCloseFile = -3002,
NSURLErrorCannotWriteToFile = -3003,
NSURLErrorCannotRemoveFile = -3004,
NSURLErrorCannotMoveFile = -3005,
NSURLErrorDownloadDecodingFailedMidStream = -3006,
NSURLErrorDownloadDecodingFailedToComplete =-3007,
NSURLErrorInternationalRoamingOff NS_ENUM_AVAILABLE(10_7, 3_0) = -1018,
NSURLErrorCallIsActive NS_ENUM_AVAILABLE(10_7, 3_0) = -1019,
NSURLErrorDataNotAllowed NS_ENUM_AVAILABLE(10_7, 3_0) = -1020,
NSURLErrorRequestBodyStreamExhausted NS_ENUM_AVAILABLE(10_7, 3_0) = -1021,
NSURLErrorBackgroundSessionRequiresSharedContainer NS_ENUM_AVAILABLE(10_10, 8_0) = -995,
NSURLErrorBackgroundSessionInUseByAnotherProcess NS_ENUM_AVAILABLE(10_10, 8_0) = -996,
NSURLErrorBackgroundSessionWasDisconnected NS_ENUM_AVAILABLE(10_10, 8_0)= -997,
};
找到了吧!!!NSURLErrorCancelled就是-999,它代表請求被取消的意思。
根本原因
出現NSURLErrorDomain Code=-999的根本原因是什麼呢?其實就是因為webview在之前的請求還沒有載入完成,下一個請求發起了,此時webview會取消掉之前的請求,因此會回撥到失敗這裡。
因此,在處理Webview的載入失敗的回撥時,要注意攔截掉被取消的請求。
解決方案
在webview載入失敗時,新增如下程式碼來判斷:
- (void)webView:(UIWebView *)webViewdidFailLoadWithError:(NSError *)error { [self stopAnimating]; // 如果是被取消,什麼也不幹 if([errorcode] == NSURLErrorCancelled) { return; } // 後續失敗處理 }
最後
如果大家遇到同樣的問題,請不要著急,這個bug不一定是後臺的,也不一定是前端的,因此彼此應該要互相配合,共同找到問題的根本原因。
由於安卓也有同樣的問題,但是復現率沒有iOS的高,在筆者找出根本原因後,H5人員與安卓端描述,希望安卓端也能統一改,但是描述不清楚,導致安卓這邊有意見。於是叫筆者過來幫忙解釋原因,講了半天,安卓的leader說不可能~不會的~不應該~不影響~
發現跟安卓溝通要是不懂一點安卓,真心容易被人忽悠。當然,最後還是要改的,事實都擺在面前了,還能有什麼藉口可以逃避!
希望大家在遇到同樣的問題時,淡定!溝通協作共同解決問題。
相關推薦
iOS NSURLErrorDomain Code=-999
iOS NSURLErrorDomain Code=-999 前言 今天有一個線上bug,是分配給提供H5的團隊的,但是後臺查不出來原因。於是讓前端iOS幫忙查一查原因。 今天,交給我來幫忙查原因,但是問題在網路好的狀態下並不必現,很難去定位問題的根本原因。最後只能到測試
Error Domain=NSURLErrorDomain Code=-999 請求取消
1、錯誤一:Error Domain=NSURLErrorDomain Code=-999 導致原因: 1、一個頁面沒有被完全載入之前收到下一個請求,此時迅速會出現此error,error=-999 2、此時可能已經載入完成,則忽略此error,繼續進行載入。 2、錯
Error Domain=NSURLErrorDomain Code=-999錯誤
有時候遇到這個錯誤:Error Domain=NSURLErrorDomain Code=-999 “The operation couldn’t be completed. - (void)webView:(UIWebView *)webView didFailLo
Error Domain=NSURLErrorDomain Code=-999
載入h5頁面遇到這個問題導致載入很慢。 NS_ENUM(NSInteger) { NSURLErrorUnknown = -1, NSURLErrorCancelled = -999, NSURLErrorBadURL = -100
iOS AFNetworking load failed with error Error Domain=NSURLErrorDomain Code=-1001 "The request ti問題解決
在使用 AFNetworking 進行伺服器資料的請求時,出現瞭如下錯誤: 根據列印的錯誤資訊,我們可以發現,這是網路請求超時引起的,所以對程式碼修改如下: AFHTTPSessionManager *manager = [AFHTTPSession
iOS知識---webView載入網址報錯Error Domain=NSURLErrorDomain Code=-1022 "The resource could not be loaded beca
xcode在使用webView載入網頁的時候可能會遇到載入不出來的報錯問題, App Transport Security has blocked a cleartext HTTP (http://)
iOS Error = NSURLErrorDomain Code=-1022 " 錯誤解決
匯入一個SDK 裡面網路返回error 報Code = -1022 ,後來發現為題所在 由於iOS9以後,需要App的網路協議裡面都必須使用HTTPS協議! 與原來的http不相容 , 解決:
iOS xcode 7網路請求錯誤failure Error Domain=NSURLErrorDomain Code=-1022 "The resource could not be loaded
在我們使用(xocde7.0)開啟以前的專案時,發現之前的專案在原來的版本上都沒有問題,在xcode7.0上網路請求部分發生了錯誤,會看到有這麼一段東西輸出在控制檯(據說7.1沒那問題); 2015-11-20 16:12:16.569 AFNetworkin
AFN3.0 PATCH請求報錯Error Domain=NSURLErrorDomain Code=-1012 "(null)"
我試圖執行一個HTTP PATCH請求,但我不斷收到錯誤域= nsurlerrordomain程式碼= 1012錯誤。我的程式碼: //封裝的請求方法 + (void)requestMethod:(NSString *)method urlStr:(NSStr
真機除錯報錯error ==Error Domain=NSURLErrorDomain Code=-1009 "似乎已斷開與網際網路的連線。"
真機除錯報錯error ==Error Domain=NSURLErrorDomain Code=-1009 "似乎已斷開與網際網路的連線。" 請注意,錯誤程式碼是-1009,網上關於網路連結查詢錯誤程式碼的網站很多,查詢一下,會發現 -1009 kCFURLErrorN
關於使用UIWebView載入HTTPS站點出現NSURLErrorDomain code=-1202
最近在做push 資訊到facebook中。當使用UIWebview載入https的站點時webview總是會報NSURLErrorDomain code=-1202,導致網頁載入失敗。自己列印錯誤和網上搜索是因為證書失效,https使用超文字安全傳輸協議,即超文字傳輸協議
Hybrid----優秀開原始碼解讀之JS與iOS Native Code互調的優雅實現方案
轉載自:http://blog.csdn.net/yanghua_kobe/article/details/8209751 簡介 它優雅地實現了在使用UIWebView時JS與ios 的ObjC nativecode之間的互調,支援訊息傳送、接收、訊息
安裝xcode6 beta 後調試出現Unable to boot the iOS Simulator以及編譯蘋果官方Swift的demo報錯failed with exit code 1的解決的方法
imu fonts mat 詳細說明 watermark data- 重新啟動 技術分享 說明 蘋果昨天公布新語言Swift(雨燕),須要安裝xcode6 以及mac os 系統為10.9以上。 (xcode6 beta 可在官方下載。須要登錄開發人員賬號;mac os
iOS Code Signing: 解惑詳解
唯一標識 解惑 並且 iphone 條件 等於 個人開發 視覺 電腦 原文鏈接地址:http://www.cnblogs.com/andyque/archive/2011/08/30/2159086.html iPhone開發的代碼簽名 代碼簽名確保代碼的真實以及明確識
iOS Provisioning Profile(Certificate)與Code Signing詳解
使用 簡析 win8 計算 sta 得到 三方 tair agent 摘自:http://blog.csdn.net/phunxm/article/details/42685597 引言 關於開發證書配置(Certificates & Ident
iOS-Code-Snippet
1.單行註釋 /** <#單行註釋#> */ 2.mark註釋 #pragma mark - <#Mark-註釋#> 3.可變陣列 /** <#註釋#> */ @property (nonatomic, strong) NSM
iOS報錯:linker command failed with exit code 1 (use -v to see invocation)尋找答案之旅
iOS報錯:linker command failed with exit code 1 (use -v to see invocation 錯誤出現 問題分析 最終解決方案 錯誤出現 Android開發程式設計師
iOS開發中:errcode = 40163; errmsg = code been used
// 使用者同意 let paramter = ["appid" : WEIXIN_APPID, &nbs
iOS開發中報錯duplicate symbols for architecture arm64 linker command failed with exit code 1
在對接微信三方登陸SDK時,在demo中沒有任何問題,然而提供給遊戲對接之後便出現了這個問題 duplicate symbols for architecture arm64 linker command failed with exit code 1 經驗告訴我
iOS自定義任意解析度的Camera(包含example code)
說在前面 如果不想看文章,可以直接翻到最後,我已經把程式碼上傳到gist上,但這樣你會失去一個理解程式碼的機會。 概述 該文章會涉及到的概念包括: AVCaptureDeviceInput,AVCaptureVideoDataOutput,AVCaptureV