IOS 网络浅析-(八 NSURLSession简介)

就在不长也不短的时间前,苹果正式命令咱们要向NSURLSession看,因此我们不得不认认真真的听从老大的教导,努力认知NSURLSession。其实呢,三方早已为我们解决了问题,但是呢,我们还是有必要大概了解一下NSURLSession。下面呢,我就为大家简单介绍NSURLSession。

*下面是一位大牛写过的一段话,在此献上*

NSURLConnection在开发中会使用的越来越少,iOS9已经将NSURLConnection废弃,现在最低版本一般适配iOS,所以也可以使用。NSURLConnection上传图片,可以自己找资料。

NSURLConnection相对于NSURLSession,安全性低。NSURLConnection下载有峰值,比较麻烦处理。

尽管适配最低版本iOS7,也可以使用NSURLSession。AFN已经不支持NSURLConnection。

NSURLSession:会话。默认是挂起状态,如果要请求网络,需要开启。

[NSURLSession sharedSession] 获取全局的NSURLSession对象。在iPhone的所有app共用一个全局session.

NSURLSessionUploadTask -> NSURLSessionDataTask -> NSURLSessionTask

NSURLSessionDownloadTask -> NSURLSessionTask

NSURLSessionDownloadTask下载,默认下载到tmp文件夹。下载完成后删除临时文件。所以我们要在删除文件之前,将它移动到Cache里。

下载 测试

//
//  ViewController.m
//  CX-NSURLSession简介
//
//  Created by ma c on 16/3/21.
//  Copyright © 2016年 xubaoaichiyu. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

}
//这是为了测试而建立的点击屏幕事件。
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

    //下载 测试

    NSURL * url = [NSURL URLWithString:[@"http://localhost/tupian.jpg" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

    NSURLRequest * request = [NSURLRequest requestWithURL:url];

    NSURLSession * session = [NSURLSession sharedSession];

    NSURLSessionDownloadTask * task = [session downloadTaskWithRequest:request completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) {

        NSLog(@"下载完成");
        //response.suggestedFilename 响应信息中的资源文件名
        NSString * cacheParh = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]stringByAppendingString:response.suggestedFilename];
        NSLog(@"缓存地址%@",cacheParh);
        //获取文件管理器
        NSFileManager * manager = [NSFileManager defaultManager];

        //将临时文件移动到缓存目录下
        //[NSURL fileURLWithPath:cachesPath] 将本地路径转化为URL类型
        //URL如果地址不正确,生成的url对象为空

        [manager moveItemAtURL:location toURL:[NSURL fileURLWithPath:cacheParh] error:NULL];
    }];

    //开启任务
    [task resume];
}

@end

GET 测试 一

//
//  ViewController.m
//  CX-NSURLSession简介
//
//  Created by ma c on 16/3/21.
//  Copyright © 2016年 xubaoaichiyu. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

}
//这是为了测试而建立的点击屏幕事件。
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

    //get测试一

    //创建URL
    NSURL * url = [NSURL URLWithString:@"http://localhost/login.php?username=haha&password=123"];
    //创建 NSURLSession
    NSURLSession * session = [NSURLSession sharedSession];

    //创建任务
    NSURLSessionDataTask * task = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {

        NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);

    }];
    //开启任务
    [task resume];

}

@end

GET 测试 二

//
//  ViewController.m
//  CX-NSURLSession简介
//
//  Created by ma c on 16/3/21.
//  Copyright © 2016年 xubaoaichiyu. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

}
//这是为了测试而建立的点击屏幕事件。
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

    //get测试二

    //创建URL
    NSURL * url = [NSURL URLWithString:@"http://localhost/login.php?username=haha&password=123"];
    //创建请求
    NSURLRequest * request = [NSURLRequest requestWithURL:url];
    //创建 NSURLSession
    NSURLSession * session = [NSURLSession sharedSession];

    //创建任务

    NSURLSessionDataTask * task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {

        NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);
    }];
    //开启任务
    [task resume];

}

@end

POST 测试

//
//  ViewController.m
//  CX-NSURLSession简介
//
//  Created by ma c on 16/3/21.
//  Copyright © 2016年 xubaoaichiyu. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

}
//这是为了测试而建立的点击屏幕事件。
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

    //post 测试

    //创建URL
    NSURL * url = [NSURL URLWithString:@"http://localhost/login.php"];
    //创建请求
    NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:url];

    request.HTTPMethod = @"POST";

    request.HTTPBody = [@"username=haha&password=123" dataUsingEncoding:NSUTF8StringEncoding];

    //创建 NSURLSession
    NSURLSession * session = [NSURLSession sharedSession];

    //创建任务

    NSURLSessionDataTask * task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {

        NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);
    }];
    //开启任务
    [task resume];

}

@end
时间: 2024-10-07 00:17:01

IOS 网络浅析-(八 NSURLSession简介)的相关文章

iOS网络编程(六) NSURLSession详解

昨夜浏览Demo的时候,看到别人请求网络数据用的是NSURLSession,当时就在想这里什么,怎么没有用过,引起了我的好奇心,遂去百度-谷歌-官方文档一一查看,有了一定的了解,原来NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的. 查找资料,写了一个小Demo,大家可以看看,有什么不足的地方,可以留言帮我指出来. // // HMTRootViewController.m // // // Created by HMT on 14-6-7.

IOS网络访问之NSURLSession

NSURLSession是IOS7中新添加的网络访问接口,作用与NSURLConnection一致,在程序在前台时,NSURLSession与NSURLConnection可以互为替代工作.如果用户强制将程序关闭,NSURLSession会断掉. NSURLSession中关键类有下面几种 1:NSURLSessionConfiguration:用于配置NSURLSession工作模式以及网络设置 工作模式分为下面三种: 普通模式(default):可以使用缓存 + (NSURLSessionC

IOS 网络浅析-(十一 三方 AFNetworking3.0简介)

AFNetworking3.0是目前最新的版本,本来打算介绍一下2.6,但是想想2.6名不久矣,就决定不介绍了,有兴趣的小伙伴可以上网查一查.下面我就开始进入正题了. 目前使用人数最多的第三方网络库,没有之一.从开始的NSURLConnection到现在的NSURLSession,它都一直保持着与苹果的步调一致,而由它也衍生出大量的相关第三方网络功能库,不仅仅因为他的可靠,好用,一直保持着维护更新,也是为什么它这么受到广大程序员的青睐. 上传data // // ViewController.m

IOS 网络浅析-(十二 UIWebView简介)

在这篇随笔里,我们只要知道UIWebView是什么就可以了. UIWebView 是苹果提供的用来展示网页的UI控件,它也是最占内存的控件. iOS8.0之后出现了webkit框架,WKWebView相比UIWebView节省了1/4~1/3的内存,速度快,但是没缓存功能. 对于一些购物类app网页的展示是必不可免的,因此UIWebView对于我们来说也是应该精通的歌空间. 下面给大家先简单介绍一下UIWebView. // // ViewController.m // CX-UIWebView

iOS 网络编程:NSURLSession

NSURLSession类和相关的类提供很多API来下载HTTP的内容.这些API提供多种delegate协议来支持验证和执行后台下载任务. 1 URL Session 设计概念 Session中的任务行为依赖三件事: Session类型:在创建时,由configuration 对象决定: task类型:数据传输类型: session执行方式:有前台和后台两种方式. 1.1 Session类型(3种)     NSURLSession API提供三种类型的session,而这三种类型是在创建时由

IOS 网络浅析-(七 JSON解析之三方JSONKit)

在这个网络横行的时代......... 有没有小说的感觉,哈哈??. 言归正传,之前我写过XML的网络解析,但是现在的app开发很少有用到XML解析的了,主流的则是JSON.(有时间我会对其进行总结)三方更是让json解析更加简便,由于代码过于简单,请大家做好心理准备.不要被吓到哦. // // ViewController.m // CX-JSON解析(三方JSONKit-master) // // Created by ma c on 16/3/18. // Copyright © 2016

iOS网络2——NSURLSession

原文在此 一.整体介绍 NSURLSession在2013年随着iOS7的发布一起面世,苹果对它的定位是作为NSURLConnection的替代者,然后逐步将NSURLConnection退出历史舞台.现在使用最广泛的第三方网络框架:AFNetworking.SDWebImage等等都使用了NSURLSession.作为iOS开发人员,应该紧随苹果的步伐,不断的学习,无论是软件的更新.系统的更新.API的更新,而不能墨守成规. Session翻译为中文意思是会话,我们知道,在七层网络协议中有物理

IOS网络开发NSURLSession详解(一)概述

原创blog,转载请注明出处blog.csdn.net/hello_hwc 我的IOS-SDK详解专栏,欢迎关注 http://blog.csdn.net/column/details/huangwenchen-ios-sdk.html 前言: 这个IOS网络编程的系列计划6篇文章,NSURLSession3篇(一篇概述,一篇详细阐述三种task和delegate的使用,一篇阐述授权,证书等内容),网络的基础知识两篇(一篇REST API讲解已经写完了,一篇我会把写博客的过程中遇到的概念总结出来

iOS网络编程开发—HTTP协议

iOS网络编程开发—HTTP协议 说明:apache tomcat服务器必须占用8080端口 一.URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) 通过1个URL,能找到互联网上唯一的1个资源 URL就是资源的地址.位置,互联网上的每个资源都有一个唯一的URL 2.URL中常见的协议 (1)HTTP 超文本传输协议,访问的是远程的网络资源,格式是http:// http协议是在网络开发中最常用的协议 (2)file 访问的是本地计算机上的资源