[Swift通天遁地]4、網絡和線程-(5)解析網絡請求數據:String(字符串)、Data(二進制數據)和JSON數據

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(shanqingyongzhi)
➤博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:http://www.javashuo.com/article/p-tofjiagx-kv.html 
➤若是連接不是山青詠芝的博客園地址,則多是爬取做者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持做者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html

目錄:[Swift]通天遁地Swiftios

本文將演示如何解析網絡請求數據:使用Alamofire的Get請求並輸出字符串(String)、二進制數據(Data)和JSON數據。git

首先確保在項目中已經安裝了所需的第三方庫。github

點擊【Podfile】,查看安裝配置文件。json

1 source 'https://github.com/CocoaPods/Specs.git'
2 platform :ios, '12.0'
3 use_frameworks!
4 
5 target ‘DemoApp’ do
6     pod 'Alamofire', '~> 4.0'
7 end

根據配置文件中的相關配置,安裝第三方庫。swift

而後點擊打開【DemoApp.xcworkspace】項目文件。服務器

在項目導航區,打開視圖控制器的代碼文件【ViewController.swift】微信

如今開始編寫代碼,實現網絡請求數據的解析功能。網絡

  1 import UIKit
  2 //在當前的類文件中,引入已經安裝的第三方類庫
  3 import Alamofire
  4 
  5 class ViewController: UIViewController {
  6 
  7     override func viewDidLoad() {
  8         super.viewDidLoad()
  9         // Do any additional setup after loading the view, typically from a nib.
 10         //依次測試下文的四個解析服務器返回數據的方法
 11         //未知數據格式
 12         responseHandler()
 13 
 14         //字符串
 15         //responseStringHandler()
 16 
 17         //二進制
 18         //responseDataHandler()
 19 
 20         //JSON
 21         //responseJsonHandler()
 22     }
 23     
 24     //添加一個方法,處理沒法明確服務器返回數據的格式的狀況
 25     func responseHandler()
 26     {
 27         //調用網絡操做庫的網絡請求方法,並處理從服務器返回的信息
 28         Alamofire.request("https://httpbin.org/get").response
 29         { 
 30             response in
 31             //在控制檯輸出:返回的網絡請求對象
 32             print("Request: \(response.request)")
 33             //在控制檯輸出:網絡返回對象
 34             print("Response: \(response.response)")
 35             //在控制檯輸出:錯誤信息
 36             print("Error: \(response.error)")
 37             
 38             //得到網絡返回的數據,並對數據進行字符編碼
 39             if let data = response.data, let utf8Text = String(data: data, encoding: .utf8)
 40             {
 41                 //在控制檯輸出編碼後的內容
 42                 print("Data: \(utf8Text)")
 43             }
 44         }
 45     }
 46     
 47     //添加一個方法,用來解析由服務器返回的字符串數據
 48     func responseStringHandler()
 49     {
 50         //調用網絡操做庫的網絡請求方法,並處理從服務器返回的字符串數據
 51         Alamofire.request("https://httpbin.org/get").responseString
 52         { 
 53             response in
 54             //在控制檯輸出:網絡請求是否成功
 55             print("Success: \(response.result.isSuccess)")
 56             //在控制檯輸出:網絡返回結果的值
 57             print("Response String: \(response.result.value)")
 58         }
 59     }
 60     
 61     //添加一個方法,用來解析由服務器返回的二進制數據
 62     func responseDataHandler()
 63     {
 64         //調用網絡操做庫的網絡請求方法,並處理從服務器返回的二進制數據
 65         Alamofire.request("https://httpbin.org/get").responseData
 66         { 
 67             response in
 68             //在控制檯輸出返回對象的詳細信息
 69             debugPrint("All Response Info: \(response)")
 70             
 71             //得到網絡返回的數據,並對數據進行字符編碼
 72             if let data = response.result.value, let utf8Text = String(data: data, encoding: .utf8)
 73             {
 74                 //在控制檯輸出編碼後的內容
 75                 print("Data: \(utf8Text)")
 76             }
 77         }
 78     }
 79     
 80     //添加一個方法,用來解析由服務器返回的JSON數據
 81     func responseJsonHandler()
 82     {
 83         //調用網絡操做庫的網絡請求方法,並處理從服務器返回的JSON數據
 84         Alamofire.request("https://httpbin.org/get").responseJSON
 85         { 
 86             response in
 87             //在控制檯輸出返回對象的詳細信息
 88             debugPrint(response)
 89             
 90             //得到網絡返回的數據,並對數據進行字符編碼
 91             if let json = response.result.value
 92             {
 93                 //在控制檯輸出編碼後的內容
 94                 print("JSON: \(json)")
 95             }
 96         }
 97     }
 98     
 99     override func didReceiveMemoryWarning() {
100         super.didReceiveMemoryWarning()
101         // Dispose of any resources that can be recreated.
102     }
103 }
相關文章
相關標籤/搜索