SlideShare a Scribd company logo
1 of 29
Download to read offline
iOS程式設計 九
李晧
2016/04/21
iOS常⽤用的網路路連線
• HTTP / HTTPS
• Socket
• XMPP
• Telnet
• ......
HTTP 常⾒見見的請求⽅方法
• GET:⼀一般性的讀取資料
• HEAD:僅提供標頭資訊
• POST:⽤用於提交資料或檔案
• PUT:上傳最新內容
• DELETE:請求刪除指定位置的資料
HTTP 狀狀態碼
• 2xx:請求成功
• 3xx:重新導向
• 4xx:⽤用⼾戶端錯誤
• 5xx:伺服器錯誤
常⽤用的資料交換格式
• JSON
• XML
• Protobuf
JSON
• 全名:JavaScript Object Notation
• MIME 類型:application/json
• 資料型態包含:字串串、數值、布林林、物件、陣列列
及null值
• root 只能是JSON物件或JSON陣列列
• 細節參參考:http://www.json.org/
JSON Object
Object
JSON Array
Array
JSON Value
Value
JSONSerialization
• iOS 5 之後新增的原⽣生 JSON 解析物件
• Dictionary 的 key 必須為 String
• 數值不可使⽤用無窮⼩小數
• 解析時需使⽤用 JSON Data
JSONSerialization
• isValidJSONObject(_:)
• 檢查物件是否可被轉譯⾄至 JSON data
• jsonObject(with:options:)
• 透過 JSON Data 創建 JSON Object
• data(withJSONObject:options:)
• 將 JSON Object 轉譯為 JSON Data
SwiftyJSON
• 以 Swift 撰寫的開源函式庫
• 解析巢狀狀結構時無須逐層確認節點是否存在
• 優點:撰寫容易易
• 缺點:解析處理理速度慢
ATS
• 全名:App Transport Security
• iOS 9 新增的特性 (WWDC 2015, Session 711)
• 要求 APP 內必須使⽤用 HTTPS
• 可在 Info.plist 的 NSAppTransportSecurity 底下
設定 NSAllowsArbitraryLoads 為 YES 以關閉 ATS
ATS
• WWDC 2016, Session 706 公告 2016 年年底強制使
⽤用 ATS,未使⽤用 ATS 的 APP 不得上架
• 2016/12 公告強制使⽤用 ATS 暫緩執⾏行行
• 最新的期限還未公告
URL
• 存放「連結」的結構
• 由 scheme、host、port、path、…組合⽽而成
• 透過 String 建立時需注意是否成功
URLRequest
• allHTTPHeaderFields:設定標頭資訊
• httpMethod:連線⽅方法
• httpBody:透過POST送出的資料
URLSession
• dataTask(with:completionHandler:)
• 創建連線任務
• uploadTask(with:from:completionHandler:)
• 創建傳送單⼀一檔案的任務
URLSessionTask
• resume()
• 啟動連線
• cancel()
• 取消連線
GCD
• 全名:Grand Central Dispatch
• 由 C 實作的多執⾏行行緒管理理組合
• 不容易易取消已排定的任務
• 有取消任務的需求可改⽤用:Operation、
OperationQueue
GCD
• 以 dispatch 為關鍵字
• 在 Objective-C 使⽤用 GCD 其風格有顯著差異異
• Swift 3 之後更更新 GCD 的語法,較符合 Swift 的撰
寫風格
DispatchQueue
• main
• 取得主執⾏行行緒序列列
• global(qos:)
• 創建⼀一個新的執⾏行行緒序列列
QoS
• 全名:Quality of Service
• 描述任務的重要性及優先順序
• 畫⾯面的更更新⼀一定要在主執⾏行行緒序列列完成
DispatchQueue
• async(execute:)
• 以非同步(平⾏行行)⽅方式執⾏行行 Closure 內部程式
• sync(execute:)
• 以同步⽅方式執⾏行行 Closure 內部程式
• 使⽤用sync需注意死結
實作
https://github.com/kokuyoku82/SHULoginDemo
伺服器資訊
• 路路徑:http://54.215.139.77:8000
• 位置:AWS 北加州
• 等級:t2.micro
• 同時可容納:20個連線
• 資料庫:DynamoDB (NoSQL)
註冊 API
• ⽅方法:POST
• 路路徑:/user/
• 標頭需包含:Content-Type: application/json
• 資料格式:JSON
• 必要參參數:email、password
• 成功代碼:201
登入 API
• ⽅方法:POST
• 路路徑:/user/login
• 標頭需包含:Content-Type: application/json
• 資料格式:JSON
• 必要參參數:email、password
• 成功代碼:200
使⽤用者資料 API
• ⽅方法:GET
• 路路徑:/user/<userID>
• 成功代碼:200

More Related Content

More from Hao Lee

客製化換頁動畫
客製化換頁動畫客製化換頁動畫
客製化換頁動畫Hao Lee
 
Coding Freestyle
Coding FreestyleCoding Freestyle
Coding FreestyleHao Lee
 
把玩 Jenkins CI
把玩 Jenkins CI把玩 Jenkins CI
把玩 Jenkins CIHao Lee
 
SceneKit 簡介
SceneKit 簡介SceneKit 簡介
SceneKit 簡介Hao Lee
 
105-2 iOS程式設計(十七)
105-2 iOS程式設計(十七)105-2 iOS程式設計(十七)
105-2 iOS程式設計(十七)Hao Lee
 
105-2 iOS程式設計(十五)
105-2 iOS程式設計(十五)105-2 iOS程式設計(十五)
105-2 iOS程式設計(十五)Hao Lee
 
105-2 iOS程式設計(十四)
105-2 iOS程式設計(十四)105-2 iOS程式設計(十四)
105-2 iOS程式設計(十四)Hao Lee
 
105-2 iOS程式設計(十三)
105-2 iOS程式設計(十三)105-2 iOS程式設計(十三)
105-2 iOS程式設計(十三)Hao Lee
 
105-2 iOS程式設計(十二)
105-2 iOS程式設計(十二)105-2 iOS程式設計(十二)
105-2 iOS程式設計(十二)Hao Lee
 
105-2 iOS程式設計(十一)
105-2 iOS程式設計(十一)105-2 iOS程式設計(十一)
105-2 iOS程式設計(十一)Hao Lee
 
105-2 iOS程式設計(十)
105-2 iOS程式設計(十)105-2 iOS程式設計(十)
105-2 iOS程式設計(十)Hao Lee
 
105-2 iOS程式設計(八)
105-2 iOS程式設計(八)105-2 iOS程式設計(八)
105-2 iOS程式設計(八)Hao Lee
 
105-2 iOS程式設計(七)
105-2 iOS程式設計(七)105-2 iOS程式設計(七)
105-2 iOS程式設計(七)Hao Lee
 
105-2 iOS程式設計(六)
105-2 iOS程式設計(六)105-2 iOS程式設計(六)
105-2 iOS程式設計(六)Hao Lee
 
105-2 iOS程式設計(五)
105-2 iOS程式設計(五)105-2 iOS程式設計(五)
105-2 iOS程式設計(五)Hao Lee
 
105-2 iOS程式設計(四)
105-2 iOS程式設計(四)105-2 iOS程式設計(四)
105-2 iOS程式設計(四)Hao Lee
 
105-2 iOS程式設計(三)
105-2 iOS程式設計(三)105-2 iOS程式設計(三)
105-2 iOS程式設計(三)Hao Lee
 
105-2 iOS程式設計(二)
105-2 iOS程式設計(二) 105-2 iOS程式設計(二)
105-2 iOS程式設計(二) Hao Lee
 
105-2 iOS程式設計(一)
105-2 iOS程式設計(一)105-2 iOS程式設計(一)
105-2 iOS程式設計(一)Hao Lee
 

More from Hao Lee (19)

客製化換頁動畫
客製化換頁動畫客製化換頁動畫
客製化換頁動畫
 
Coding Freestyle
Coding FreestyleCoding Freestyle
Coding Freestyle
 
把玩 Jenkins CI
把玩 Jenkins CI把玩 Jenkins CI
把玩 Jenkins CI
 
SceneKit 簡介
SceneKit 簡介SceneKit 簡介
SceneKit 簡介
 
105-2 iOS程式設計(十七)
105-2 iOS程式設計(十七)105-2 iOS程式設計(十七)
105-2 iOS程式設計(十七)
 
105-2 iOS程式設計(十五)
105-2 iOS程式設計(十五)105-2 iOS程式設計(十五)
105-2 iOS程式設計(十五)
 
105-2 iOS程式設計(十四)
105-2 iOS程式設計(十四)105-2 iOS程式設計(十四)
105-2 iOS程式設計(十四)
 
105-2 iOS程式設計(十三)
105-2 iOS程式設計(十三)105-2 iOS程式設計(十三)
105-2 iOS程式設計(十三)
 
105-2 iOS程式設計(十二)
105-2 iOS程式設計(十二)105-2 iOS程式設計(十二)
105-2 iOS程式設計(十二)
 
105-2 iOS程式設計(十一)
105-2 iOS程式設計(十一)105-2 iOS程式設計(十一)
105-2 iOS程式設計(十一)
 
105-2 iOS程式設計(十)
105-2 iOS程式設計(十)105-2 iOS程式設計(十)
105-2 iOS程式設計(十)
 
105-2 iOS程式設計(八)
105-2 iOS程式設計(八)105-2 iOS程式設計(八)
105-2 iOS程式設計(八)
 
105-2 iOS程式設計(七)
105-2 iOS程式設計(七)105-2 iOS程式設計(七)
105-2 iOS程式設計(七)
 
105-2 iOS程式設計(六)
105-2 iOS程式設計(六)105-2 iOS程式設計(六)
105-2 iOS程式設計(六)
 
105-2 iOS程式設計(五)
105-2 iOS程式設計(五)105-2 iOS程式設計(五)
105-2 iOS程式設計(五)
 
105-2 iOS程式設計(四)
105-2 iOS程式設計(四)105-2 iOS程式設計(四)
105-2 iOS程式設計(四)
 
105-2 iOS程式設計(三)
105-2 iOS程式設計(三)105-2 iOS程式設計(三)
105-2 iOS程式設計(三)
 
105-2 iOS程式設計(二)
105-2 iOS程式設計(二) 105-2 iOS程式設計(二)
105-2 iOS程式設計(二)
 
105-2 iOS程式設計(一)
105-2 iOS程式設計(一)105-2 iOS程式設計(一)
105-2 iOS程式設計(一)
 

Recently uploaded

educ6506presentationtc3302771-240427173057-06a46de5.pptx
educ6506presentationtc3302771-240427173057-06a46de5.pptxeduc6506presentationtc3302771-240427173057-06a46de5.pptx
educ6506presentationtc3302771-240427173057-06a46de5.pptxmekosin001123
 
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...黑客 接单【TG/微信qoqoqdqd】
 
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptxEDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptxmekosin001123
 
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书jakepaige317
 
中国文学, 了解王安石变法,熙宁变法,熙盛变法- 中国古代改革的类型- 富国强兵,
中国文学, 了解王安石变法,熙宁变法,熙盛变法- 中国古代改革的类型- 富国强兵,中国文学, 了解王安石变法,熙宁变法,熙盛变法- 中国古代改革的类型- 富国强兵,
中国文学, 了解王安石变法,熙宁变法,熙盛变法- 中国古代改革的类型- 富国强兵,Xin Yun Teo
 
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制jakepaige317
 
EDUC6506_ClassPresentation_TC330277 (1).pptx
EDUC6506_ClassPresentation_TC330277 (1).pptxEDUC6506_ClassPresentation_TC330277 (1).pptx
EDUC6506_ClassPresentation_TC330277 (1).pptxmekosin001123
 

Recently uploaded (7)

educ6506presentationtc3302771-240427173057-06a46de5.pptx
educ6506presentationtc3302771-240427173057-06a46de5.pptxeduc6506presentationtc3302771-240427173057-06a46de5.pptx
educ6506presentationtc3302771-240427173057-06a46de5.pptx
 
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
 
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptxEDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
 
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书
 
中国文学, 了解王安石变法,熙宁变法,熙盛变法- 中国古代改革的类型- 富国强兵,
中国文学, 了解王安石变法,熙宁变法,熙盛变法- 中国古代改革的类型- 富国强兵,中国文学, 了解王安石变法,熙宁变法,熙盛变法- 中国古代改革的类型- 富国强兵,
中国文学, 了解王安石变法,熙宁变法,熙盛变法- 中国古代改革的类型- 富国强兵,
 
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
 
EDUC6506_ClassPresentation_TC330277 (1).pptx
EDUC6506_ClassPresentation_TC330277 (1).pptxEDUC6506_ClassPresentation_TC330277 (1).pptx
EDUC6506_ClassPresentation_TC330277 (1).pptx
 

105-2 iOS程式設計(九)