NSURLSessionTaskDelegate

- URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:

客戶端告知服務器端需要HTTP重定向。
此方法只會在default session或者ephemeral session中調用,而在background session中,session task會自動重定向。

- URLSession:task:didReceiveChallenge:completionHandler:


NSURLSessionDelegate中的

  • URLSession:didReceiveChallenge:completionHandler:

該方法是處理task-level的認證挑戰。在NSURLSessionDelegate中提供了一個session-level的認證挑戰代理方法。該方法的調用取決于認證挑戰的類型:

對于session-level的認證挑戰,挑戰類型有 
NSURLAuthenticationMethodNTLM, 
NSURLAuthenticationMethodNegotiate, 
NSURLAuthenticationMethodClientCertificate,
或NSURLAuthenticationMethodServerTrust — 此時session會調用其代理方法URLSession:didReceiveChallenge:completionHandler:。
如果你的app沒有提供對應的NSURLSessionDelegate方法,
那么NSURLSession對象就會調用URLSession:task:didReceiveChallenge:completionHandler:
來處理認證挑戰。
對于non-session-level的認證挑戰,NSURLSession對象調用URLSession:task:didReceiveChallenge:completionHandler:來處理認證挑戰。如果你在app中使用了session代理方法,而且也確實要處理認證挑戰這個問題,那么你必須還是在task level來處理這個問題,或者提供一個task-level的handler來顯式調用每個session的handler。
而對于non-session-level的認證挑戰,session的delegate中的URLSession:didReceiveChallenge:completionHandler:方法不會被調用。

- URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:

周期性地通知代理發送到服務器端數據的進度。

- URLSession:task:needNewBodyStream:

當一個session task需要發送一個新的request body stream到服務器端的時候,調用該代理方法。

該代理方法會在下面兩種情況被調用:
如果task是由uploadTaskWithStreamedRequest:創建的,那么提供初始的request body stream時候會調用該代理方法。

因為認證挑戰或者其他可恢復的服務器錯誤,而導致需要客戶端重新發送一個含有body stream的request,這時候會調用該代理。

URLSession:task:didCompleteWithError:

告知該session task已經完成了數據傳輸任務

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容