分享

OC之NSURLSession的用法一

 没原创_去搜索 2015-12-22
http://blog.csdn.net/xu_code/article/details/19842163


NSURLSession是iOS7中新的网络接口,它与的NSURLConnection是并列的。在程序在前台时,NSURLSession与NSURLConnection可以互为替代工作。如果用户强制将程序关闭,NSURLSession会断掉。
 
NSURLSession提供的功能:
1.通过URL将数据下载到内存
2.通过URL将数据下载到文件系统
3.将数据上传到指定URL
4.在后台完成上述功能

在普通的应用场景下NSURLSession与NSURLConnection相比没有什么优势,但是在程序切换到后台之后Background的Session就显得更加灵活一些

NSURLSessionTask



以下是NSURLSession在GET和POST请求下的简单使用:

  1.     一、Get请求  
  2.   
  3.     // 1. URL  
  4.     NSURL *url = [NSURL URLWithString:@"http://m.baidu.com"];  
  5.       
  6.     // 2. Request  
  7.     NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:2.0f];  
  8.       
  9.     // 3. Connection  
  10. //    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {  
  11. //          
  12. //        NSString *html = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];  
  13. //          
  14. //        [_webView loadHTMLString:html baseURL:url];  
  15. //    }];  
  16.     // 3. 获取Session的单例对象  
  17.     NSURLSession *session = [NSURLSession sharedSession];  
  18.       
  19.     // 所谓任务,就是本次会话需要干什么  
  20.     NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {  
  21.           
  22.         // 网络数据任务完成的块代码  
  23.         NSString *html = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];  
  24.           
  25.         [_webView loadHTMLString:html baseURL:url];  
  26.     }];  
  27.       
  28.     // 4.Task默认是挂起的,要启动(继续)任务  
  29.     [task resume];  
  30.   
  31.     二、Post请求  
  32.   
  33.     // 1. 获取用户名和密码  
  34.     NSString *userName = _userNameText.text;  
  35.     NSString *password = _passwordText.text;  
  36.       
  37.     // 2. 网络访问  
  38.     // 1) URL  
  39.     NSURL *url = [NSURL URLWithString:@"http://localhost/~apple/test/login.php"];  
  40.       
  41.     // 2) URLRequest  
  42.     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:2.0f];  
  43.       
  44.     // 1> HTTPMethod访问方法  
  45.     request.HTTPMethod = @"POST";  
  46.       
  47.     // 2> HTTPBody数据体 NSData  
  48.     NSString *bodyString = [NSString stringWithFormat:@"username=%@&password=%@", userName, password];  
  49.     request.HTTPBody = [bodyString dataUsingEncoding:NSUTF8StringEncoding];  
  50.       
  51.     // 3) 发起请求 queue参数是data返回后指定在那个线程执行队列  
  52. //    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {  
  53. //          
  54. //        NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];  
  55. //          
  56. //        NSLog(@"%@", result);  
  57. //    }];  
  58.       
  59.     // 登录一般为同步请求,发送同步请求  
  60.     NSURLResponse *response = nil;  
  61.     NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];  
  62.       
  63.     NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];  
  64.       
  65.     NSLog(@"%@", result);  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多