vcbk1tDX08Dgu6/By8nPtKvPwtTYtcTIzs7xo6yyosfS1qez1rnSxvCjr7vWuLSjr8ihz/u1xLLZ1/eju7e1u9i1xG5zZGF0YdDo0qrX1Ly6yKW0psDto6zV4rXjscjG8GFmbmV0d29ya2luZ7XEseO93bPMtsi/ydLUy7XT0Mv5srvI56Ossc++uWFmbmV0d29ya2luZ8rH1Nq4/LjftcSy47TOvfjQ0MHLt+LXsKGjPC9wPgo8cD69+NDQ0ru0zrHq17y1xM34wuey2df3ztLDx7fWzqrI58/CvLiyvaO6PC9wPgo8cD5zdGVwMTrF5NbDc2Vzc2lvbiyxyMjnxeTWw8frx/O1xGhlYWRlcqO7xeTWw8rHt/Gxo7Tmu7q05qGiY29va2lloaLWpMrptcg8L3A+CjxwPrT6wuvKvsD9yOfPwqO6PC9wPgo8cD48YnI+CjwvcD4KPHA+PC9wPgo8cCBjbGFzcz0="p1"> NSURLSessionConfiguration *config = [NSURLSessionConfiguration ephemeralSessionConfiguration];
// 2
[config setHTTPAdditionalHeaders:@{@"Authorization":[Dropbox apiAuthorizationHeader]}];
// 3
_session = [NSURLSession sessionWithConfiguration:config];
step2:
使用生成的session調用任務方法,保存方法返回的task;對該task執行resume操作(默認生成的task是處於掛起狀態)。
此處的任務方法有兩種類型,一種是taskwithurl,一種是taskwithrequest,簡單來說只針對url請求就可以調用withurl方法,如果需要在請求中帶上更多內容進行一些配置的話需要采用taskwithrequest相關的方法。
代碼示例如下:
NSURL*url = [Dropbox appRootURL];
// 2
NSURLSessionDataTask *dataTask =
[self.session dataTaskWithURL:url
completionHandler:^(NSData*data,
NSURLResponse *response,
NSError *error){
if (!error){
// TODO 1: More coming here!
}
}];
// 3
[dataTask resume];
step3:
在上一步請求中的block實現結果解析(nsdata需要根據接口具體情況(一般是服務器側決定的)解析成可以理解的數據,如json/xml/plist等);也可以不在block中進行相關操作,而是實現相關的代理方法(需要在step1中先設置session的代理),對相關的結果/進度等進行處理。
urlsession相關的代理方法有很多,這裡不一一列舉,主要有以下幾組協議:
@protocol NSURLSessionDelegate
@protocol NSURLSessionTaskDelegate
@protocol NSURLSessionDataDelegate
@protocol NSURLSessionDownloadDelegate
結合其對應類的層次關系,相關的幾組協議的關系也就不難理解了。