我第一次调用此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{
}
})
}
答案 0 :(得分:1)
是的,本地缓存是问题所在。有多种解决方案。
How to disable caching in Alamofire
您可以通过删除所有缓存的响应来确认它是本地缓存。只需添加:
URLCache.shared.removeAllCachedResponses()