0

The first time I call this API it works fine. The second time I call an API using this code however it seems like nothing happens. The data returned is exactly the same and the backend doesn't register any incoming API calls from my client.

It seems like some sort of caching is happening and I've no idea how to turn it off. Using Alamofire 4.5.

This is my code:

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{

        }
    })
}
Rutger Huijsmans
  • 2,330
  • 2
  • 30
  • 67

1 Answers1

1

Yes, local cache is the problem. There are multiple solutions.

How to disable caching in Alamofire

You could confirm that it is local caching by removing all the cached responses. Just add this: URLCache.shared.removeAllCachedResponses()

Gerrit Post
  • 1,247
  • 13
  • 25