【问题标题】:API call using Alamofire won't refresh使用 Alamofire 的 API 调用不会刷新
【发布时间】:2018-01-11 03:16:25
【问题描述】:

我第一次调用这个 API 时它运行良好。我第二次使用此代码调用 API,但似乎什么也没发生。返回的数据完全相同,后端没有注册来自我的客户端的任何传入 API 调用。

似乎正在发生某种缓存,我不知道如何将其关闭。使用 Alamofire 4.5。

这是我的代码:

func getPopularBrocodes(_ offset: Int, completionHandler: @escaping (([AnyObject]?, Int?, AnyObject?) -> Void)) {
    let urlString = Constant.apiUrl().appendingFormat(Constant.apiGetPopularBrocodes).appending("?offset=\(offset)")

    Alamofire.request(urlString, method: .get, encoding: Alamofire.JSONEncoding.default, headers: self.header).validate().responseJSON(completionHandler: {response in
        if response.result.isSuccess {
            if let value = response.value {
                var jsonString = ""
                let json = JSON(value)
                jsonString = json["data"].rawString()!
                let nextInt = Int(json["next"].rawString()!)
                if let brocodes:Array<BroCode> = Mapper<BroCode>().mapArray(JSONString: jsonString) {
                    completionHandler(brocodes, nextInt, nil)
                } else {
                    completionHandler(nil, nextInt, nil)
                }
            }
        }
        if response.result.isFailure{

        }
    })
}

【问题讨论】:

    标签: swift alamofire


    【解决方案1】:

    是的,本地缓存是问题所在。有多种解决方案。

    How to disable caching in Alamofire

    您可以通过删除所有缓存的响应来确认它是本地缓存。只需添加以下内容: URLCache.shared.removeAllCachedResponses()

    【讨论】:

    • 在您发布的链接上使用安德鲁的回答对我有用。为 Alamofire 请求创建了一个扩展。
    猜你喜欢
    • 2020-05-08
    • 2018-12-16
    • 2018-12-09
    • 2021-09-03
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    • 2018-08-26
    相关资源
    最近更新 更多