1.Tips:
發(fā)布版本 -> iOS7
支持HTTP 2.0
下載時直接將下載的文件存儲到沙盒內的tmp文件夾(要保存的需要自行處理)
支持斷點續(xù)傳
支持后臺下載/上傳
多線程異步下載
2.使用步驟:
1.創(chuàng)建session對象
2.通過session創(chuàng)建task
3.啟動task
4.根據(jù)所設置的block(delegate)處理請求返回
3.具體使用
( 1 )GET侥衬、POST請求
通過block處理請求返回
// 請求url
NSURL *url = [NSURL URLWithString:@"http://www.test.com/login"];
// 初始化request溯泣,在request中設置請求方式
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
// POST請求
request.HTTPMethod = @"POST";
// GET請求
//request.HTTPMethod = @"GET";
request.HTTPBody = [@"username=Hohn&pwd=888" dataUsingEncoding:NSUTF8StringEncoding];
// 創(chuàng)建session對象
NSURLSession *session = [NSURLSession sharedSession];
// 創(chuàng)建task對象践惑,并設置對請求的返回處理block
NSURLSessionTask *task = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
//TODO 請求返回處理
}];
// 啟動task
[task resume];
通過delegate處理請求返回
// 請求url
NSURL *url = [NSURL URLWithString:@"http://www.test.com/login"];
// 初始化request妈经,在request中設置請求方式
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
// POST請求
request.HTTPMethod = @"POST";
// GET請求
//request.HTTPMethod = @"GET";
request.HTTPBody = [@"username=Hohn&pwd=888" dataUsingEncoding:NSUTF8StringEncoding];
// 創(chuàng)建session對象
NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]
delegate:self
delegateQueue:[[NSOperationQueue alloc] init]];
// 創(chuàng)建task對象兵睛,并設置對請求的返回處理block
NSURLSessionTask *task = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
//TODO 請求返回處理
}];
// 啟動task
[task resume];
//對應的代理方法如下:
// 1.接收到服務器的響應
- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler {
// 允許處理服務器的響應余黎,才會繼續(xù)接收服務器返回的數(shù)據(jù)
completionHandler(NSURLSessionResponseAllow);
}
// 2.接收到服務器的數(shù)據(jù)(可能調用多次)
- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data {
// 處理每次接收的數(shù)據(jù)
}
// 3.請求成功或者失敗(如果失敗施绎,error有值)
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error {
// 請求完成,成功或者失敗的處理
}
通過delegate去處理請求可以更方便的控制各個階段,從而實現(xiàn)斷點續(xù)傳等更豐富的功能耕赘,各種delegate