在iOS開發(fā)中經(jīng)常會遇到網(wǎng)絡請求的錯誤, 一方面可能會是自己網(wǎng)絡請求的方式, 參數(shù), 請求頭等造成的; 另一方面可能就是后臺寫的接口出了問題; 所以看懂報錯原因就顯得尤為重要.
一. iOS錯誤狀態(tài)碼
經(jīng)常遇到的錯誤是400~500, 下面主要整理下它們各自的報錯原因:
HTTP 錯誤 400
400 請求出錯
由于語法格式有誤症概,服務器無法理解此請求边苹。不作修改纺非,客戶程序就無法重復此請求。
HTTP 錯誤 401
401.1 未授權:登錄失敗
此錯誤表明傳輸給服務器的證書與登錄服務器所需的證書不匹配砂沛。
請與 Web 服務器的管理員聯(lián)系,以確認您是否具有訪問所請求資源的權限伏伯。
401.2 未授權:服務器的配置導致登錄失敗
此錯誤表明傳輸給服務器的證書與登錄服務器所需的證書不匹配浩考。此錯誤通常由未發(fā)送正確的 WWW 驗證表頭字段所致壤圃。
請與 Web 服務器的管理員聯(lián)系陵霉,以確認您是否具有訪問所請求資源的權限。
401.3 未授權:由于資源中的 ACL 而未授權
此錯誤表明客戶所傳輸?shù)淖C書沒有對服務器中特定資源的訪問權限伍绳。此資源可能是客戶機中的地址行所列出的網(wǎng)頁或文件踊挠,也可能是處理客戶機中的地址行所列出的文件所需服務器上的其他文件。
請記錄試圖訪問的完整地址冲杀,并與 Web 服務器的管理員聯(lián)系以確認您是否具有訪問所請求資源的權限效床。
401.4 未授權:授權服務被篩選程序拒絕
此錯誤表明 Web 服務器已經(jīng)安裝了篩選程序,用以驗證連接到服務器的用戶漠趁。此篩選程序拒絕連接到此服務器的真品證書的訪問扁凛。
請記錄試圖訪問的完整地址,并與 Web 服務器的管理員聯(lián)系以確認您是否具有訪問所請求資源的權限闯传。
401.5 未授權:ISAPI/CGI 應用程序的授權失敗
此錯誤表明試圖使用的 Web服務器中的地址已經(jīng)安裝了 ISAPI 或 CGI程序谨朝,在繼續(xù)之前用以驗證用戶的證書。此程序拒絕用來連接到服務器的真品證書的訪問。
請記錄試圖訪問的完整地址字币,并與 Web服務器的管理員聯(lián)系以確認您是否具有訪問所請求資源的權限
HTTP 錯誤 403
403.1 禁止:禁止執(zhí)行訪問
如果從并不允許執(zhí)行程序的目錄中執(zhí)行 CGI则披、ISAPI或其他執(zhí)行程序就可能引起此錯誤。
如果問題依然存在洗出,請與 Web 服務器的管理員聯(lián)系士复。
403.2 禁止:禁止讀取訪問
如果沒有可用的默認網(wǎng)頁或未啟用此目錄的目錄瀏覽,或者試圖顯示駐留在只標記為執(zhí)行或腳本權限的目錄中的HTML 頁時就會導致此錯誤翩活。
如果問題依然存在阱洪,請與 Web 服務器的管理員聯(lián)系。
403.3 禁止:禁止寫訪問
如果試圖上載或修改不允許寫訪問的目錄中的文件菠镇,就會導致此問題冗荸。
如果問題依然存在,請與 Web服務器的管理員聯(lián)系利耍。
403.4 禁止:需要 SSL
此錯誤表明試圖訪問的網(wǎng)頁受安全套接字層(SSL)的保護蚌本。要查看,必須在試圖訪問的地址前輸入https:// 以啟用 SSL隘梨。
如果問題依然存在程癌,請與 Web服務器的管理員聯(lián)系。
403.5 禁止:需要 SSL 128
此錯誤消息表明您試圖訪問的資源受 128位的安全套接字層(SSL)保護轴猎。要查看此資源嵌莉,需要有支持此SSL 層的瀏覽器。
請確認瀏覽器是否支持 128 位 SSL安全性税稼。如果支持烦秩,就與 Web服務器的管理員聯(lián)系,并報告問題郎仆。
403.6 禁止:拒絕 IP 地址
如果服務器含有不允許訪問此站點的 IP地址列表,并且您正使用的 IP地址在此列表中兜蠕,就會導致此問題扰肌。
如果問題依然存在,請與 Web服務器的管理員聯(lián)系熊杨。
403.7 禁止:需要用戶證書
當試圖訪問的資源要求瀏覽器具有服務器可識別的用戶安全套接字層(SSL)證書時就會導致此問題曙旭。可用來驗證您是否為此資源的合法用戶晶府。
請與 Web服務器的管理員聯(lián)系以獲取有效的用戶證書桂躏。
403.8 禁止:禁止站點訪問
如果 Web服務器不為請求提供服務,或您沒有連接到此站點的權限時川陆,就會導致此問題剂习。
請與 Web 服務器的管理員聯(lián)系。
403.9 禁止訪問:所連接的用戶太多
如果 Web太忙并且由于流量過大而無法處理您的請求時就會導致此問題。請稍后再次連接鳞绕。
如果問題依然存在失仁,請與 Web 服務器的管理員聯(lián)系。
403.10 禁止訪問:配置無效
此時 Web 服務器的配置存在問題们何。
如果問題依然存在萄焦,請與 Web服務器的管理員聯(lián)系。
403.11 禁止訪問:密碼已更改
在身份驗證的過程中如果用戶輸入錯誤的密碼冤竹,就會導致此錯誤拂封。請刷新網(wǎng)頁并重試。
如果問題依然存在鹦蠕,請與 Web服務器的管理員聯(lián)系烘苹。
403.12 禁止訪問:映射程序拒絕訪問
拒絕用戶證書試圖訪問此 Web 站點。
請與站點管理員聯(lián)系以建立用戶證書權限片部。如果必要镣衡,也可以更改用戶證書并重試。
HTTP 錯誤 404
404 找不到
Web 服務器找不到您所請求的文件或腳本档悠。請檢查URL 以確保路徑正確廊鸥。
如果問題依然存在,請與服務器的管理員聯(lián)系辖所。
HTTP 錯誤 405
405 不允許此方法
對于請求所標識的資源惰说,不允許使用請求行中所指定的方法。請確保為所請求的資源設置了正確的 MIME 類型缘回。
如果問題依然存在吆视,請與服務器的管理員聯(lián)系。
HTTP 錯誤 406
406 不可接受
根據(jù)此請求中所發(fā)送的“接受”標題酥宴,此請求所標識的資源只能生成內容特征為“不可接受”的響應實體啦吧。
如果問題依然存在,請與服務器的管理員聯(lián)系拙寡。
HTTP 錯誤 407
**407 需要代理身份驗證 **
在可為此請求提供服務之前授滓,您必須驗證此代理服務器。請登錄到代理服務器肆糕,然后重試般堆。
如果問題依然存在,請與 Web 服務器的管理員聯(lián)系诚啃。
HTTP 錯誤 412
412 前提條件失敗
在服務器上測試前提條件時淮摔,部分請求標題字段中所給定的前提條件估計為FALSE∈际辏客戶機將前提條件放置在當前資源 metainformation(標題字段數(shù)據(jù))中和橙,以防止所請求的方法被誤用到其他資源仔燕。
如果問題依然存在,請與 Web 服務器的管理員聯(lián)系胃碾。
HTTP 錯誤 414
**414 Request-URI 太長 **
Request-URL太長涨享,服務器拒絕服務此請求。僅在下列條件下才有可能發(fā)生此條件:
客戶機錯誤地將 POST 請求轉換為具有較長的查詢信息的 GET 請求仆百。
客戶機遇到了重定向問題(例如厕隧,指向自身的后綴的重定向前綴)。
服務器正遭受試圖利用某些服務器(將固定長度的緩沖區(qū)用于讀取或執(zhí)行 Request-URI)中的安全性漏洞的客戶干擾俄周。
如果問題依然存在吁讨,請與 Web 服務器的管理員聯(lián)系。
HTTP 錯誤 500
500 服務器的內部錯誤
Web 服務器不能執(zhí)行此請求峦朗。請稍后重試此請求建丧。
如果問題依然存在,請與 Web服務器的管理員聯(lián)系波势。
HTTP 錯誤 501
501 未實現(xiàn)
Web 服務器不支持實現(xiàn)此請求所需的功能翎朱。請檢查URL 中的錯誤,如果問題依然存在尺铣,請與 Web服務器的管理員聯(lián)系拴曲。
HTTP 錯誤 502
502 網(wǎng)關出錯
當用作網(wǎng)關或代理時,服務器將從試圖實現(xiàn)此請求時所訪問的upstream 服務器中接收無效的響應凛忿。
如果問題依然存在澈灼,請與 Web服務器的管理員聯(lián)系。
附:
iOS網(wǎng)絡請求的錯誤狀態(tài)碼
維基百科 List of HTTP status codes
二. 特殊的錯誤處理
證書無效問題:NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9843)
當前服務器的證書無效, 網(wǎng)上也有很多其他的處理方式, 我選擇的是下方這種, 附上代碼:
@implementation NSURLRequest (NSURLRequestWithIgnoreSSL)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host
{
return YES;
}
@end
把這個段代碼 寫到NSURLRequest分類中, 作用是 繞過SSL證書驗證, 直接訪問; 當然這樣的做法不安全, 一般都不會這樣做, 只是為了測試接口是否可用, 最好還是服務器添加證書;
附:
https信任證書的三種方式
希望看到此文的簡友們能夠積極補充, 共同維護這篇文章, 多謝(__) 嘻嘻……