Make REST API call in Swift

前端 未结 15 1379
被撕碎了的回忆
被撕碎了的回忆 2020-12-02 04:20

I\'m trying to use Swift to make a GET call to a REST API, and have tried to follow numerous tutorials, but can\'t figure it out. Either because I cannot figure out how to

15条回答
  •  臣服心动
    2020-12-02 04:42

    func getAPICalling(mainUrl:String) {
        //create URL
        guard let url = URL(string: mainUrl) else {
          print("Error: cannot create URL")
          return
        }
        //create request
        let urlRequest = URLRequest(url: url)
        
        // create the session
        let config = URLSessionConfiguration.default
        let session = URLSession(configuration: config)
        
        // make the request
        let task = session.dataTask(with: urlRequest) {
          (data, response, error) in
            
          // check for any errors
          guard error == nil else {
            print("error calling GET")
            print(error!.localizedDescription)
            return
          }
            
          // make sure we got data
          guard let responseData = data else {
            print("error: did not receive data")
            return
          }
            
          // convert Data in JSON && parse the result as JSON, since that's what the API provides
          do {
            guard let object = try JSONSerialization.jsonObject(with: responseData, options: [])
              as? [String: Any] else {
                print("error trying to convert data to JSON")
                return
            }
            //JSON Response
            guard let todoTitle = object["response"] as? NSDictionary else {
              print("Could not get todo title from JSON")
              return
            }
            
            //Get array in response
            let responseList = todoTitle.value(forKey: "radioList") as! NSArray
            
            for item in responseList {
                let dic = item as! NSDictionary
                let str = dic.value(forKey: "radio_des") as! String
                self.arrName.append(str)
                print(item)
            }
            
            DispatchQueue.main.async {
                self.tblView.reloadData()
            }
            
          } catch  {
            print("error trying to convert data to JSON")
            return
          }
        }
        task.resume()
    }
    

    Usage:

    getAPICalling(mainUrl:"https://dousic.com/api/radiolist?user_id=16")

提交回复
热议问题