- 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已經完成了數據傳輸任務