如何在 iOS 應用中使用 Swift 發起 HTTP 請求?


在 iOS 中發起 HTTP 請求,我們將使用 DataTask 和 session。我們將建立配置、會話、URL、請求和 dataTask 物件。讓我們看看我們將要經歷的步驟。

HTTP 請求可以有多種型別,這取決於我們想要向伺服器發出何種請求。以下是基本型別的請求。

“GET”、“POST”、“PUT”、“DELETE”,我們可以根據我們的 API 使用其中任何一個。每種請求的基本原理都相同,如下所示。讓我們用 DELETE 型別的請求來檢視這些示例。

  • 首先,我們需要建立一個具有預設配置的會話物件。

let configuration = URLSessionConfiguration.default
let session = URLSession(configuration: configuration)
  • 然後,我們需要建立一個我們需要的型別的 URL 請求,它可以是 get、post、delete 或 put。在本例中,我們看到的是“Delete”型別。

let url = URL(string: URLString)
//let url = NSURL(string: urlString as String)
var request : URLRequest = URLRequest(url: url!)
request.httpMethod = "DELETE"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
  • 建立請求物件後,我們需要使用上面建立的 URL 執行 dataTask。這就是我們現在完整的 dataTask 方法應該是什麼樣子。

let dataTask = session.dataTask(with: url!) { data,response,error in
   guard let httpResponse = response as? HTTPURLResponse, let receivedData = data
   else {
      print("error: not a valid http response")
      return
   }
   switch (httpResponse.statusCode) {
      case 200: //success response.
         break
      case 400:
         break
      default:
         break
   }
}
dataTask.resume()
  • 現在,我們可以將其嵌入到一個函式中並在我們的程式碼中使用它。

hitAPI(_for URLString:String) {
   let configuration = URLSessionConfiguration.default
   let session = URLSession(configuration: configuration)
   let url = URL(string: URLString)
   //let url = NSURL(string: urlString as String)
   var request : URLRequest = URLRequest(url: url!)
   request.httpMethod = "DELETE"
   request.addValue("application/json", forHTTPHeaderField: "Content-Type")
   request.addValue("application/json", forHTTPHeaderField: "Accept")
   let dataTask = session.dataTask(with: url!) { data,response,error in
      // 1: Check HTTP Response for successful GET request
      guard let httpResponse = response as? HTTPURLResponse, let receivedData = data
      else {
         print("error: not a valid http response")
         return
      }
      switch (httpResponse.statusCode) {
         case 200:
            //success response.
            break
         case 400:
            break
         default:
            break
      }
   }
   dataTask.resume()
}

注意:您可能需要在 info.plist 檔案中允許傳輸安全異常才能訪問某些 API。

此示例沒有顯示輸出,因為需要 API 來刪除某些資料。

更新於: 2019年7月30日

779 次瀏覽

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.