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];