datataskwithurl与datawithcontentsofurl区别在哪
发布网友
发布时间:2022-04-23 18:31
我来回答
共1个回答
热心网友
时间:2023-10-11 18:11
第一种Data Task用于加载数据,使用全局的shared session和dataTaskWithRequest:completionHandler:方法创建。代码如下:
[objc] view plaincopy
/* 使用NSURLSessionDataTask加载网页数据 */
- (IBAction)loadData:(id)sender {
// 开始加载数据,让spinner转起来
[self.spinner startAnimating];
// 创建Data Task,用于打开我的csdn blog主页
NSURL *url = [NSURL URLWithString:@"http://blog.csdn.net/u010962810"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
completionHandler:
^(NSData *data, NSURLResponse *response, NSError *error) {
// 输出返回的状态码,请求成功的话为200
[self showResponseCode:response];
// 在webView中加载数据
[self.webView loadData:data
MIMEType:@"text/html"
textEncodingName:@"utf-8"
baseURL:nil];
// 加载数据完毕,停止spinner
[self.spinner stopAnimating];
}];
// 使用resume方法启动任务
[dataTask resume];
}
/* 输出http响应的状态码 */
- (void)showResponseCode:(NSURLResponse *)response {
NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response;
NSInteger responseStatusCode = [httpResponse statusCode];
NSLog(@"%d", responseStatusCode);
}
completionHandler指定任务完成后的动作。注意一定要使用resume方法启动任务。(Upload Task和Download Task同理)
运行结果:
第二种Upload Task用于完成上传文件任务,使用方法类似:
[objc] view plaincopy
/* 使用NSURLSessionUploadTask上传文件 */
- (IBAction)uploadFile:(id)sender {
// NSURL *URL = [NSURL URLWithString:@"http://example.com/upload"];
// NSURLRequest *request = [NSURLRequest requestWithURL:URL];
// NSData *data = ...;
//
// NSURLSession *session = [NSURLSession sharedSession];
// NSURLSessionUploadTask *uploadTask = [session uploadTaskWithRequest:request
// fromData:data
// completionHandler:
// ^(NSData *data, NSURLResponse *response, NSError *error) {
// // ...
// }];
//
// [uploadTask resume];
}