如何使用 Swift 在 iOS 应用中发起 HTTP 请求?

iosmobile developmentiphone/ipadswift更新于 2026/4/26 13:22:17

要在 iOS 中发起 HTTP 请求,我们将使用 DataTask 和会话。我们将创建配置、会话、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 删除某些数据,因此本示例未显示任何输出。



相关文章



关于我们 | 隐私条款 | 学习路线
返回顶部