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


要在 iOS 中發出 http 請求,我們要使用資料任務和會話。我們將建立配置、會話、URL、請求和資料任務物件。我們來看看將要執行的步驟。

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

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

let url = URL(string: URLString)
//let url = NSURL(string: urlString as String)
var request : URLRequest = URLRequest(url: url!)
request.httpMethod = "POST"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
  • 一旦我們建立了請求物件,就需要使用剛剛建立的 URL 執行資料任務。我們完整的 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()
  • 現在,我們可以將它嵌入一個函式並用在我們的程式碼裡。

func 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 = "POST"
   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 日

957 次檢視

開啟您的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.