URLSession 介绍 Day 15

今天来介绍使用API会用到NSURLSession

其实NSURLSession 与 URLSession是相同的

只是一个是OC的名称,一个是Swift的名称


Session(会话层)

是什麽?

原本是指OSI网路分层中的会话层

会话层负责什麽样子的东西呢?

→ 建立与别的端点的连线、维护、删除


我们使用URLSession做些什麽?

能够透过URLSession与网路互动

包括:下载以及上传

URLSession能透过Task作为要与网路互动的方式

URLSessionDataTask

URLSessionDownloadTask

URLSessionUploadTask

Task物件能够

  • fetch data
  • download files
  • upload files & data

对应上面三个Task

这边做个简单的DataTask的code示范:

这个范例会使用shared,什麽是shared?

URLSession.shared为一个 Singleton,为Default的Configuration,故没有Configuration 物件(後面会谈到),因为并非客制化的URLSession,会是使用上最简单的一种方式

URLSession.shared.dataTask(with:url){(data,response,error) in
	//检验下载下来的data是不是跟你所想的一样是个JSON
	if let data = data, let content = String(data:data, encoding: .utf8){
		// 会印出跟你所想一样的JSON
		print(content)
		}

	}

URLSession里面还包括了URLSessionConfiguration

URLSessionConfiguration是一个物件,用来作为设定:

  • 使用Cache、Cookie
  • 是否使用Cellular Data

这些设定都源自於Configuration的三大状态:

  • Default:使用Cache,Cookie
  • Ephemeral:不使用Cache,Cookie
  • background:能在背景状态中下载上传

看到下面的图片,能够知道一个Session其实能够不只使用一个Task

这张图为一般浏览与私密浏览的区别,都是透过URLSession建立,但是私密浏览浏览不会储存

Cache,所以在URLSessionConfiguration的设定下会是.ephemeral

https://i.imgur.com/MPK5NQa.png


参考连结
Apple Developer Documentation

https://medium.com/%E5%BD%BC%E5%BE%97%E6%BD%98%E7%9A%84-swift-ios-app-%E9%96%8B%E7%99%BC%E6%95%99%E5%AE%A4/%E7%86%9F%E7%B7%B4ios-sdk%E5%85%A7%E5%BB%BA%E7%9A%84delegate-%E4%BA%8C%E9%83%A8%E6%9B%B2-e6fd5a8dd489


<<:  NetSuite Order to Cash flow - Fulfill Sales Order

>>:  Day05 - 今天只调了 VS Code 让 tab 为 2格 space

AE特效目录-Day1

由於我一直很想对特效有比较深的学习,但又没有专案可以练习, 加上下班时间後也没有较长时间,所以决定以...

[DAY-11] 诚实敢言最大化 建立回馈循环

只说你敢当面对那个人说的话 越少在背後议论别人 会妨碍效率且引起负面感受的八卦就会减少 诚实就像看...

让按钮来个酷动态!操纵DOM事件:JavaScript篇 (二)

上一篇整理了 JavaScript 操纵网页元件事件的基本流程: 指定网页元件,可用 getElem...

【PHP Telegram Bot】Day30 - 社群按赞机器人(2):将按钮设成单选并且计数

阵列的特性 还记得阵列怎麽赋值吗,Day15 - 基础(4):阵列处理、JSON 我们先来复习一下...

Day 20 2D Arrays

在Java程序设计中,有时一维阵列无法计算较多且较复杂的,这时我们需要二维阵列,例如要产生一个阵列A...