iOS-NSURLSession的代理协议方法

/**
 1./接受到服务器的响应,默认会直接取消本次请求,如果不进行设置,是无法实现请求数据的效果的
 
 @param session 会话对象
 @param dataTask 任务对象
 @param response 响应头信息
 @param completionHandler 回调block,这个是我们传回去的block
 */
- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler{
    
    /**
     NSURLSessionResponseCancel = 0, 默认的 取消[task cancel]
     //Cancel the load, this is the same as -[task cancel]
     NSURLSessionResponseAllow = 1,  正常的接收数据
     Allow the load to continue
     NSURLSessionResponseBecomeDownload = 2, 把本次响应变成下载任务
     Turn this request into a download
     NSURLSessionResponseBecomeStream        也是下载任务,但是对设备的版本有要求
     API_AVAILABLE(macos(10.11),ios(9.0),watchos(2.0),tvos(9.0)) = 3,
     Turn this task into a stream task
     */
    //系统需要我们传一个block回去,不传是请求不下数据的
    completionHandler(NSURLSessionResponseAllow);
    
    //在这个方法中可以写一下初始化操作
}

/**
 接收到服务器返回的数据 , 会调用多次
 
 @param session 会话对象
 @param dataTask 请求任务
 @param data 本次请求下载的数据
 */
- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data{
    
    //这个方法会多次调用,如果数据较大用拼接的方法得到完整的数据
}

/**
 请求正常结束或者失败时调用
 无论成功或失败都会调用
 @param session 会话对象
 @param task 请求任务
 @param error 错误信息
 */
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error{
    
    //请求结束的回调方法
}

你可能感兴趣的:(iOS-NSURLSession的代理协议方法)