API 调用在 swift 中给出了过时的响应

API call is giving outdated response in swift

我正在 swift 中发出 HTTP get 请求,由于某种原因我收到了过时的响应。我将 Postman 中的响应与我在 Xcode 中打印的响应进行了比较,并且我明白了..

Postman 中的响应 Headers:

响应 Headers 打印在 Xcode 控制台:

查看以绿色突出显示的部分,两个调用是同时进行的。这是我项目的实时 API,由于当前实时数据没有变化,我没有显示 JSON 响应。但是正如您在响应 headers 中看到的那样,Postman 和 Xcode 中字段 "Date" 的值是不同的。当我在 Postman 中执行此操作时,它每次都会给我新的响应时间。但是在 Xcode 我一整天都收到相同的回复。我不知道为什么会这样。在擦除模拟器的内容(或从模拟器中删除应用程序)并再次重新安装项目后,它给了我一个新的更新响应。但是又重复了...

RequestManager 中的代码Class:

import Foundation

class RequestManager {

class func callTheGetAPI(urlString: String, closure: @escaping (Data?)->Void) {

    let url = URL.init(string: urlString)
    var urlRequest = URLRequest(url: url!)
    urlRequest.httpMethod = "GET"
    urlRequest.addValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
    let dataTask = URLSession.shared.dataTask(with: urlRequest) { (data, response, error) in

        if (error != nil) {
            print(error!.localizedDescription)
        } else {
            let httpResponse = response as? HTTPURLResponse
            print(httpResponse!.allHeaderFields)
            closure(data)
        }
    }
    dataTask.resume()
  }
}

我的代码 ViewController:

 override func viewDidLoad() {
    super.viewDidLoad()
    getRecommendedData()
}

func getRecommendedData() {
    let url = APIManager.API_01
    RequestManager.callTheGetAPI(urlString: url, closure: { response in

        do {
            if (try JSONSerialization.jsonObject(with: response!, options: .mutableContainers) as? [[String : Any]]) != nil{
//             print(json)
            }
        } catch let error {
            print(error.localizedDescription)
        }

    })
}

这就是我所有的人..如果有人知道发生了什么或者我做错了什么..请帮助..

替换下行

var urlRequest = URLRequest(url: url!)

var urlRequest = URLRequest(url: url!, cachePolicy: URLRequest.CachePolicy.reloadIgnoringCacheData, timeoutInterval: 60)

来自文档 reloadIgnoringCacheData:指定 URL 加载的数据应从原始源加载。不 现有的本地缓存数据,无论其新鲜度或有效性如何, 应该用于满足 URL 加载请求。

默认使用缓存。