在ios開發中經常會遇到網路請求的錯誤, 一方面可能會是自己網路請求的方式, 引數, 請求頭等造成的; 另一方面可能就是後台寫的介面出了問題; 所以看懂報錯原因就顯得尤為重要.
一. ios錯誤狀態碼
經常遇到的錯誤是400~500, 下面主要整理下它們各自的報錯原因:
http 錯誤 400
400 請求出錯
由於語法格式有誤,伺服器無法理解此請求。不作修改,客戶程式就無法重複此請求。
http 錯誤 401
401.1 未授權:登入失敗
此錯誤表明傳輸給伺服器的證書與登入伺服器所需的證書不匹配。
401.2 未授權:伺服器的配置導致登入失敗
此錯誤表明傳輸給伺服器的證書與登入伺服器所需的證書不匹配。此錯誤通常由未傳送正確的 www 驗證表頭字段所致。
401.3 未授權:由於資源中的 acl 而未授權
此錯誤表明客戶所傳輸的證書沒有對伺服器中特定資源的訪問許可權。此資源可能是客戶機中的位址行所列出的網頁或檔案,也可能是處理客戶機中的位址行所列出的檔案所需伺服器上的其他檔案。
401.4 未授權:授權服務被篩選程式拒絕
此錯誤表明 web 伺服器已經安裝了篩選程式,用以驗證連線到伺服器的使用者。此篩選程式拒絕連線到此伺服器的真品證書的訪問。
401.5 未授權:isapi/cgi 應用程式的授權失敗
此錯誤表明試圖使用的 web伺服器中的位址已經安裝了 isapi 或 cgi程式,在繼續之前用以驗證使用者的證書。此程式拒絕用來連線到伺服器的真品證書的訪問。
http 錯誤 403
403.1 禁止:禁止執行訪問
如果從並不允許執行程式的目錄中執行 cgi、isapi或其他執行程式就可能引起此錯誤。
403.2 禁止:禁止讀取訪問
如果沒有可用的預設網頁或未啟用此目錄的目錄瀏覽,或者試圖顯示駐留在只標記為執行或指令碼許可權的目錄中的html 頁時就會導致此錯誤。
403.3 禁止:禁止寫訪問
如果試圖上載或修改不允許寫訪問的目錄中的檔案,就會導致此問題。
403.4 禁止:需要 ssl
此錯誤表明試圖訪問的網頁受安全套接字層(ssl)的保護。要檢視,必須在試圖訪問的位址前輸入https:// 以啟用 ssl。
403.5 禁止:需要 ssl 128
此錯誤訊息表明您試圖訪問的資源受 128位的安全套接字層(ssl)保護。要檢視此資源,需要有支援此ssl 層的瀏覽器。
如果伺服器含有不允許訪問此站點的 ip位址列表,並且您正使用的 ip位址在此列表中,就會導致此問題。
403.7 禁止:需要使用者證書
當試圖訪問的資源要求瀏覽器具有伺服器可識別的使用者安全套接字層(ssl)證書時就會導致此問題。可用來驗證您是否為此資源的合法使用者。
403.8 禁止:禁止站點訪問
如果 web伺服器不為請求提供服務,或您沒有連線到此站點的許可權時,就會導致此問題。
403.9 禁止訪問:所連線的使用者太多
如果 web太忙並且由於流量過大而無法處理您的請求時就會導致此問題。請稍後再次連線。
403.10 禁止訪問:配置無效
此時 web 伺服器的配置存在問題。
403.11 禁止訪問:密碼已更改
在身份驗證的過程中如果使用者輸入錯誤的密碼,就會導致此錯誤。請重新整理網頁並重試。
403.12 禁止訪問:對映程式拒絕訪問
拒絕使用者證書試圖訪問此 web 站點。
http 錯誤 404
404 找不到
web 伺服器找不到您所請求的檔案或指令碼。請檢查url 以確保路徑正確。
http 錯誤 405
405 不允許此方法
對於請求所標識的資源,不允許使用請求行中所指定的方法。請確保為所請求的資源設定了正確的 mime 型別。
http 錯誤 406
406 不可接受
根據此請求中所傳送的「接受」標題,此請求所標識的資源只能生成內容特徵為「不可接受」的響應實體。
http 錯誤 407
**407 需要**身份驗證 **
在可為此請求提供服務之前,您必須驗證此**伺服器。請登入到**伺服器,然後重試。
http 錯誤 412
412 前提條件失敗
在伺服器上測試前提條件時,部分請求標題欄位中所給定的前提條件估計為false。客戶機將前提條件放置在當前資源 metainformation(標題字段資料)中,以防止所請求的方法被誤用到其他資源。
http 錯誤 414
**414 request-uri 太長 **
request-url太長,伺服器拒絕服務此請求。僅在下列條件下才有可能發生此條件:
客戶機錯誤地將 post 請求轉換為具有較長的查詢資訊的 get 請求。
客戶機遇到了重定向問題(例如,指向自身的字尾的重定向字首)。
伺服器正遭受試圖利用某些伺服器(將固定長度的緩衝區用於讀取或執行 request-uri)中的安全性漏洞的客戶干擾。
http 錯誤 500
500 伺服器的內部錯誤
web 伺服器不能執行此請求。請稍後重試此請求。
http 錯誤 501
501 未實現
http 錯誤 502
502 閘道器出錯
當用作閘道器或**時,伺服器將從試圖實現此請求時所訪問的upstream 伺服器中接收無效的響應。
二. 特殊的錯誤處理
證書無效問題:nsurlsession/nsurlconnection http load failed (kcfstreamerrordomainssl, -9843)
當前伺服器的證書無效, 網上也有很多其他的處理方式, 我選擇的是下方這種, 附上**:
把這個段** 寫到nsurlrequest分類中, 作用是 繞過ssl證書驗證, 直接訪問; 當然這樣的做法不安全, 一般都不會這樣做, 只是為了測試介面是否可用, 最好還是伺服器新增證書;
附:https信任證書的三種方式
希望看到此文的簡友們能夠積極補充, 共同維護這篇文章, 多謝(__) 嘻嘻……
iOS 網路請求
pragma mark 網路請求 方式 非同步 ibaction delegatebuttondidclicked uibutton sender 方法 客戶端收到伺服器的響應 pragma mark 客戶端收到伺服器的響應 void connection nsurlconnection conne...
iOS的網路請求
首先建立乙個 uiviewcontroller,然後在.m檔案中寫入 簽訂協議 inte ce mainviewcontroller 可變的資料屬性,用來拼接每一小塊資料 property nonatomic,retain nsmutabledata data property nonatomic,...
IOS 網路非同步請求
非同步請求使用與同步和佇列式非同步請求相同的物件,只不過又增加了另乙個物件,即nsurlconnectiondelegate 上 import viewcontroller.h nsinteger totaldownloaded 0 inte ce viewcontroller end implem...