iOS网络请求,iOS 9新增加了Session请求

//
//  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 网络请求,使用代理方法。适合断点下载。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值