1. 程式人生 > >[Swift通天遁地]四、網路和執行緒-(5)解析網路請求資料:String(字串)、Data(二進位制資料)和JSON資料

[Swift通天遁地]四、網路和執行緒-(5)解析網路請求資料:String(字串)、Data(二進位制資料)和JSON資料

本文將演示如何解析網路請求資料:使用Alamofire的Get請求並輸出字串(String)、二進位制資料(Data)和JSON資料。

首先確保在專案中已經安裝了所需的第三方庫。

點選【Podfile】,檢視安裝配置檔案。

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

根據配置檔案中的相關配置,安裝第三方庫。

然後點選開啟【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 }