首页 > 代码库 > 网络-URLConnection & URLSession

网络-URLConnection & URLSession

1、URLConnection
   // 1. url

    // 1> 判断text是否以http开头

    NSString *urlString = text;

    if (![text hasPrefix:@"http://"]) {

        // 2> 拼接URL字符串

     urlString = [NSString stringWithFormat:@"http://m.baidu.com/s?word=%@", text];

    }

    // 对于特殊字符,例如空格或者中文都需要%转义

    // 在iOS中,如果没有特殊要求,需要使用的编码格式是UTF8

    urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    NSURL *url = [NSURL URLWithString:urlString];

  // 2. 请求

    NSURLRequest *request = [NSURLRequest requestWithURL:url];

 // 3. 用web加载请求

    // 1> 第一步是把请求发送给服务器

    // 2> 显示服务器返回的内容

    [self.webView loadRequest:request];

 
2、URLSession
NSURLSession是iOS7中新的网络接口,与NSURLConnection是并列的。

当程序在前台时,NSURLSession与NSURLConnection大部分可以互相替代

NSURLSession支持后台网络操作,除非用户强行关闭

NSURLSession提供的功能:

通过URL将数据下载到内存

通过URL将数据下载到文件系统

将数据上传到指定URL

在后台完成上述功能

对于小型数据,例如用户登录、下载小图像、JSON & XML仍然使用NSURLConnection的异步或同步方法即可

   // 1. url

    NSURL *url = [NSURL URLWithString:@"http://m.baidu.com"];

    // 2. request

    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    // 3. session会话

    // sharedSession是一个全局网络会话的单例,便于程序员处理简单的网络请求

    NSURLSession *session = [NSURLSession sharedSession];

    // 4. 任务,所有的网络任务都是由会话来创建的

    NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {

        NSString *html = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

        NSLog(@"%@", html);

    }];

    // 5. 任务默认都是挂起的

    [task resume];

网络-URLConnection & URLSession