iOS URLSession 的基础用法(善用 guard 语法)

GET 请求

func makeMyGetCall(_ urlStr: String) {
   // urlRequest
   guard let url = URL(string: urlStr) else {
       print("Error: cannot convert urlStr to url")
       return
   }
   let urlRequest = URLRequest(url: url)

   // session
   let session = URLSession.shared

   // task
   let task = session.dataTask(with: urlRequest) { (data, response, error) in
       // check for error
       guard error == nil else {
           print("Error: error is not nil")
           return
       }
       // check for data
       guard let responseData = data else {
           print("Error: data is nil")
           return
       }
       // convert data to dict
       do {
           guard let responseDict = try JSONSerialization.jsonObject(with: responseData, options: []) as? [String: Any] else {
               print("Error: cannot convert data to dict")
               return
           }
           print(responseDict.description)
       } catch {
           print("Error: cannot convert data to dict")
           return
       }
   }
   task.resume()
   
}
复制代码

POST 请求

func makeMyPostCall(_ urlStr: String, _ parameter: [String: Any]) {

  // urlRequest
  guard let url = URL(string: urlStr) else {
      print("Error: cannot convert urlStr to url")
      return
  }
  var urlRequest = URLRequest(url: url)
  urlRequest.httpMethod = "POST"
  do {
      let parameterData = try JSONSerialization.data(withJSONObject: parameter, options: [])
      urlRequest.httpBody = parameterData
  } catch {
      print("Error: cannot convert parameter to parameterData")
      return
  }

  // session
  let session = URLSession.shared

  // task
  let task = session.dataTask(with: urlRequest) { (data, response, error) in
      // check for error
      guard error == nil else {
          print("Error: error is not nil")
          return
      }
      // check for data
      guard let responseData = data else {
          print("Error: responseData is nil")
          return
      }
      // convert data to dict
      do {
          guard let responseDict = try JSONSerialization.jsonObject(with: responseData, options: []) as? [String: Any] else {
              print("Error: cannot convert responseData to responseDict")
              return
          }
          print(responseDict.description)
      } catch {
          print("Error: cannot convert responseData to responseDict --")
          return
      }
  }
  task.resume()
  
}
复制代码

Thank cmoulton for her help

转载于:https://juejin.im/post/5bbec19be51d450e5c47abc2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值