NSURLSession

-(void)get{
    NSURLSession * session=[NSURLSession sharedSession];
    NSURLSessionTask * task=[session dataTaskWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.xiufa.com/BJUI/plugins/kindeditor_4.1.10/attached/image/20160427/20160427020327_69298.png"]] completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        
        _imageview.image= [ UIImage imageWithData:data];
        NSLog(@"%@",[NSThread currentThread]);
    }];
    [task resume];
    
}
-(void)get2{
    NSURLSession * session=[NSURLSession sharedSession];
    NSURLSessionTask * task=[session dataTaskWithURL:[NSURL URLWithString:@"http://www.xiufa.com/BJUI/plugins/kindeditor_4.1.10/attached/image/20160427/20160427020327_69298.png"] completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        _imageview.image= [ UIImage imageWithData:data];
        NSLog(@"%@",[NSThread currentThread]);
    }];
    [task resume];
}//post 请求
-(void)post{
    NSURLSession * session=[NSURLSession sharedSession];
    NSMutableURLRequest * request=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.xiufa.com/BJUI/plugins/kindeditor_4.1.10/attached/image/20160427/20160427020327_69298.png"]];
    [email protected]"GET";
    request.HTTPBody=[@"" dataUsingEncoding:NSUTF8StringEncoding];
    NSURLSessionTask * task=[session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        NSOperationQueue * que=[NSOperationQueue mainQueue];
        [que addOperationWithBlock:^{
            _imageview.image= [ UIImage imageWithData:data];
            NSLog(@"%@",[NSThread currentThread]);
            
        }];
    }];
    [task resume];
    
}
-(void)download{
    NSURLSession * session=[NSURLSession sharedSession];
    
    NSURLSessionDownloadTask * down= [session downloadTaskWithURL:[NSURL URLWithString:@"http://www.xiufa.com/BJUI/plugins/kindeditor_4.1.10/attached/image/20160427/20160427020327_69298.png"] completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        NSString * file=[[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)lastObject] stringByAppendingPathComponent:response.suggestedFilename];
        NSFileManager * mag=[NSFileManager defaultManager];
        [mag moveItemAtURL:location toURL:[NSURL fileURLWithPath:file] error:nil];
        //        [mag moveItemAtPath:location toURL:[NSURL fileURLWithPath:file] error:nil];
        NSLog(@"%@",location);
        
    }];
    [down resume];
}

-(void)down{
    NSURLSession * session=[NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[[NSOperationQueue alloc]init]];
    NSURLSessionDataTask * task=[session dataTaskWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.bz55.com/uploads/allimg/140918/138-14091PZ001.jpg"]]];
    [task resume];

}
//2接收服务器的数据
-(void)URLSession:(NSURLSession *)session dataTask:(nonnull NSURLSessionDataTask *)dataTask didReceiveData:(nonnull NSData *)data{
    NSLog(@"%s",__func__);

[_data appendData:data];
        NSOperationQueue * quer=[NSOperationQueue mainQueue];
        
        [quer addOperationWithBlock:^{
            _imageview.image=[UIImage imageWithData:_data];
            
            NSLog(@"%@",[NSThread currentThread]);
        }];

NSLog(@"%@",data);
}
//1接收服务器响应
-(void)URLSession:(NSURLSession *)session dataTask:(nonnull NSURLSessionDataTask *)dataTask didReceiveResponse:(nonnull NSURLResponse *)response completionHandler:(nonnull void (^)(NSURLSessionResponseDisposition))completionHandler{
    completionHandler(NSURLSessionResponseAllow);
    NSLog(@"%s",__func__);
}
//3请求失败或者成功
-(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error{
    NSLog(@"%s",__func__);

NSLog(@"%@",error);
}

大文件下载

-(void)downBig
{
    
    NSURLSession * session=[NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[[NSOperationQueue alloc]init]];
    
    NSURLSessionDownloadTask * down=[session downloadTaskWithURL: [NSURL URLWithString:@"http://www.xiufa.com/BJUI/plugins/kindeditor_4.1.10/attached/image/20160427/20160427020327_69298.png"]];
    [down resume];

}

#pragma mark NSURLSessionDownloadDelegate
-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didResumeAtOffset:(int64_t)fileOffset expectedTotalBytes:(int64_t)expectedTotalBytes{
    
    
}

/**
 *  每次写入数据到临时文件时,就会调用一次这个方法
 *  @param bytesWritten              这个词写入多少
 *  @param totalBytesWritten         已写入多少
 *  @param totalBytesExpectedToWrite 总大小
 */
-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite{
    NSLog(@"---%f---",1.0*totalBytesExpectedToWrite/totalBytesWritten);
}
//下载完毕
-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location
{
    //文件将存放的真实路径
    NSString * file=[[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)lastObject]stringByAppendingPathComponent:downloadTask.response.suggestedFilename];
    NSFileManager * mag=[NSFileManager defaultManager];
    [mag moveItemAtURL:location toURL:[NSURL fileURLWithPath:file] error:nil];
}

小文件下载

-(void)download{
    NSURLSession * session=[NSURLSession sharedSession];
    
    NSURLSessionDownloadTask * down= [session downloadTaskWithURL:[NSURL URLWithString:@"http://www.xiufa.com/BJUI/plugins/kindeditor_4.1.10/attached/image/20160427/20160427020327_69298.png"] completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        NSString * file=[[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)lastObject] stringByAppendingPathComponent:response.suggestedFilename];
        NSFileManager * mag=[NSFileManager defaultManager];
        [mag moveItemAtURL:location toURL:[NSURL fileURLWithPath:file] error:nil];
        //        [mag moveItemAtPath:location toURL:[NSURL fileURLWithPath:file] error:nil];
        NSLog(@"%@",location);
        
    }];
    [down resume];
}

//2接收服务器的数据
-(void)URLSession:(NSURLSession *)session dataTask:(nonnull NSURLSessionDataTask *)dataTask didReceiveData:(nonnull NSData *)data{
    NSLog(@"%s",__func__);

[_data appendData:data];
        NSOperationQueue * quer=[NSOperationQueue mainQueue];
        
        [quer addOperationWithBlock:^{
            _imageview.image=[UIImage imageWithData:_data];
            
            NSLog(@"%@",[NSThread currentThread]);
        }];

NSLog(@"%@",data);
}
//1接收服务器响应
-(void)URLSession:(NSURLSession *)session dataTask:(nonnull NSURLSessionDataTask *)dataTask didReceiveResponse:(nonnull NSURLResponse *)response completionHandler:(nonnull void (^)(NSURLSessionResponseDisposition))completionHandler{
    completionHandler(NSURLSessionResponseAllow);
    NSLog(@"%s",__func__);
}
//3请求失败或者成功
-(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error{
    NSLog(@"%s",__func__);

NSLog(@"%@",error);
}

时间: 2024-08-24 09:28:18

NSURLSession的相关文章

iOS开发网络篇—发送GET和POST请求(使用NSURLSession)

iOS开发网络篇—发送GET和POST请求(使用NSURLSession) 说明: 1)该文主要介绍如何使用NSURLSession来发送GET请求和POST请求 2)本文将不再讲解NSURLConnection的使用,如有需要了解NSURLConnection如何发送请求. 详细信息,请参考:http://www.cnblogs.com/wendingding/p/3813706.html 3)本文示例代码发送的请求均为http请求,已经对info.plist文件进行配置. 如何配置,请参考:

第八篇、封装NSURLSession网络请求框架

主要功能介绍: 1.GET请求操作 2.POST请求操作 1.处理params参数(例如拼接成:usename="123"&password="123") #import <Foundation/Foundation.h> @interface LYURLRequestSerialization : NSObject +(NSString *)LYQueryStringFromParameters:(NSDictionary *)paramete

NSURLConnection / NSURLSession/ SDWebImage

1. NSURLConnection (iOS9开始被弃用)=========================================== 此类的对象加载一个URL请求对象,通过异步/同步的方式发送请求,并获得响应. 此类位于Foundation框架下,继承自NSObject ------------------------------ 异步/同步?    通讯方式 异步:在请求发送后,无需等待响应结果,而是可以继续后续其他操作,该请求的响应在回调方法中处理(通常用到的代理方法或bloc

iOS学习-10下载(2)NSURLSession 篇

使用NSURLSessionDownloadTask下载文件的过程与前面差不多,需要注意的是文件下载文件之后会自动保存到一个临时目录,需要开发人员自己将此文件重新放到其他指定的目录中. // // ViewController.m // NSURLSession // // Copyright © 2016年 asamu. All rights reserved. // #import "ViewController.h" @interface ViewController () @e

NSURLSession学习

NSURLSession是iOS7中新的网络接口,它与NSURLConnection是并列的.但是在iOS9中,苹果已经废除了NSURLConnection的使用,使用NSURLSession代替.AFNetworking最先版已经将NSURLConnection替换为NSURLSession. 参见:https://developer.apple.com/library/prerelease/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS

iOS开发之网络编程--1、NSURLSession的基本使用

前言:学习NSURLSession的使用之前,先学习一篇关于NSURLSession的好文章<From NSURLConnection to NSURLSession>或者是国内的译文<从 NSURLConnection 到 NSURLSession>,或者不用学习本人的博客园笔记直接学习<从 NSURLConnection 到 NSURLSession>也是可以的,这篇对NSURLSession的使用有着挺详细的论述.但是本文先粗略介绍一下NSURLSession的基

网络编程(一) 利用NSURLSession发送GET POST请求

Xcode 7.0后,http链接不能直接访问(https可以),需要在Info.plist增加下面一项才能正确访问. 使用NSURLSession进行网络请求的流程: 1.构造NSURL 2.构造NSURLRequest请求对象 3.构造NSURLSession会话对象 4.创建网络请求任务:dataTask, downloadTask, uploadTask 5.发送网络请求 1.GET 请求(GET一般用于获取/查询资源信息) - (void)HTTPGET { //1.构造NSURL N

利用NSURLSession下载视频,图片,能实现断点续传

首先分析下载资源到本地,就得有URL ,点击btn ,就会解析网络地址,获取数据,就得有进度条控件 NSURLSession类的实现,通过委托代理模式去实现一些方法,需遵守<NSURLSessionDownloadDelegate>,委托代理设计模式在iOS开发中得到大量使用 /* 利用NSURLConnection实现断点续传 1.NSURLSession,iOS7中推出的一个类,有取代NSURLConnection 2.实现文件的下载与上传,而NSURLSessionData有两个子类:N

NSURLSession下载文件-代理

- 3.1 涉及知识点 (1)创建NSURLSession对象,设置代理(默认配置) ```objc //1.创建NSURLSession,并设置代理 /* 第一个参数:session对象的全局配置设置,一般使用默认配置就可以 第二个参数:谁成为session对象的代理 第三个参数:代理方法在哪个队列中执行(在哪个线程中调用),如果是主队列那么在主线程中执行,如果是非主队列,那么在子线程中执行 */ NSURLSession *session = [NSURLSession sessionWit