iOS网络请求,iOS 9新增加了Session请求
2015-11-13 20:53
381 查看
// // ViewController.m // UI_15_session(iOS9网络请求) // // Created by lanou3g on 15/11/13. // Copyright © 2015年 lirui. All rights reserved. // #import "ViewController.h" @interface ViewController ()<NSURLSessionDataDelegate> @property(nonatomic,strong)NSMutableData *mutableData; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } #pragma mark session block 网络请求 - (IBAction)session_blockButtonDidClicked:(id)sender { NSString *baseString = @"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx"; //转化为URL NSURL *baseURL = [NSURL URLWithString:baseString]; //根据 baseURL 创建网络请求对象 NSMutableURLRequest *requset = [NSMutableURLRequest requestWithURL:baseURL]; //设置参数:1.POST 2.参数体(body) [requset setHTTPMethod:@"POST"]; //2.body参数 NSString *bodyString = @"date=20131129&startRecord=1&len=5&udid=1234567890&terminalType=Iphone&cid=213"; NSData *badyData = [bodyString dataUsingEncoding:NSUTF8StringEncoding]; //设置 body(POST参数) [requset setHTTPBody:badyData]; //iOS 9 提供了 NSURLSession 来代替 NSURLConnection //首先,创建一个 NSURLSession 对象(如果要使用block来完成网络请求,这个对象可以使用 NSURLSession 自带的单例对象) NSURLSession *session = [NSURLSession sharedSession]; // session发送网络请求对象 NSURLSessionTask *task = [session dataTaskWithRequest:requset completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil]; NSLog(@"%@",dict); }]; //开始网络请求任务 [task resume]; } #pragma mark session 代理 实现网络请求 - (IBAction)session_delegateButtonDidClicked:(id)sender { NSString *baseString = @"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx"; NSURL *baseURL = [NSURL URLWithString:baseString]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:baseURL]; [request setHTTPMethod:@"POST"]; NSString *bodyString = @"date=20131129&startRecord=1&len=5&udid=1234567890&terminalType=Iphone&cid=213"; NSData *bodyData = [bodyString dataUsingEncoding:NSUTF8StringEncoding]; [request setHTTPBody:bodyData]; //创建 session //默认的 session 配置,从网络读取数据 NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration]; //需要遵守 NSURLSessionDataDelegate NSURLSession *session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:nil]; //利用 session 发送网络请求 NSURLSessionTask *task = [session dataTaskWithRequest:request]; //初始化接收数据的容器 self.mutableData = [NSMutableData data]; //开始任务 [task resume]; } #pragma mark 1.收到服务器相应 //-(void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler { // // NSLog(@"1"); // //} #pragma mark 2.服务器开始传输数据(一点一点返回,这个代理方法会被反复调用,返回 NSData 数据) -(void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data { NSLog(@"2"); [self.mutableData appendData:data]; } #pragma mark 3.客户端接收数据完成的时候 -(void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask willCacheResponse:(NSCachedURLResponse *)proposedResponse completionHandler:(void (^)(NSCachedURLResponse * _Nullable))completionHandler { NSLog(@"3"); NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:self.mutableData options:NSJSONReadingMutableContainers error:nil]; NSLog(@"%@",dict); } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
Session block网络请求,适合不需要大文件(例如视频)持续下载。
Session delegate 网络请求,使用代理方法。适合断点下载。
相关文章推荐
- 安卓TCP通信
- 判断网络状态
- HTTP协议基础
- HttpClient使用详解
- 给AFNetWorking添加http表头
- AFNetworking3.0网络请求方法封装(自带缓存功能)
- WMware Workstation 中几种网络连接的说明
- http://www.kwstu.com/ArticleView/kwstu_20144118313429
- VMware 虚拟机的网络连接方式详解
- OkHttp使用进阶
- python 网络编程
- Linux编程——网络编程
- PHP http://localhost:63342/untitled1/index.php/Home URL格式访问不到报404 的解决方案
- 自己关于Android 通过WebService进行网络编程的总结
- WebView 保存HttpResponse 中的Cookie
- HTTP Live Streaming直播(iOS直播)技术分析与实现
- bp神经网络算法
- 流媒体:搭建HTTP Live Streaming直播系统
- Android——使用Http的get方式获取数据
- UIImage、UIData之间转换、跨平台TCP传输