对API进行重复请求

时间:2017-01-23 13:52:33

标签: swift nsurlsession

我知道如何使用swift进行常规API调用。我无法理解的是如何在需要之前重复API调用。

我想每隔一秒调用一次API

API Call Code Snippet:

let url = URL(string: "https://api.darksky.net/forecast/34eaef38915078ea03c22bb9063bd7ea/37.8267,-122.4233")
    let request = URLRequest(url: url!, cachePolicy: URLRequest.CachePolicy.reloadIgnoringCacheData, timeoutInterval: 10)

    let session = URLSession(configuration: URLSessionConfiguration.default, delegate: nil, delegateQueue: OperationQueue.main)



    let task: URLSessionDataTask = session.dataTask(with: request, completionHandler: { (data: Data?, response: URLResponse?, error: Error?) in

        if let error = error {

            print(error)

        } else if let data = data,
            let dataDictionary = try! JSONSerialization.jsonObject(with: data, options: []) as? NSDictionary {
            print("API Data:")
            print(dataDictionary)

        }
    })
    task.resume()

注意:这不是我将要调用的实际API

1 个答案:

答案 0 :(得分:2)

理想情况下,对于您提到的财务解决方案等软件解决方案,服务器必须支持某种Long Polling / websockets机制,一旦建立连接,只要有更新,服务器就会向客户端提供新值(参见:{{3} })

如果服务器不支持:(不是理想的解决方案): 你可以在这里实际使用递归。在响应(成功和失败)请求再次调用相同的函数。这样你就可以继续进行民意调查。

请记住保持请求计时器短(5或10秒而不是60秒),这样如果遇到网络问题,您可以快速拨打下一个电话。