API调用在swift中提供过时的响应

Ven*_*rla 0 xcode nsurlrequest ios swift

我正在swift中进行HTTP get请求,因为某些原因我得到了过时的响应.我已经将Postman中的响应与我在Xcode中打印的响应进行了比较,我得到了这个...

邮递员的回应标题:

邮差回复标题截图

在Xcode控制台中打印的响应标头:

Xcode控制台响应头截图

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

RequestManager类中的代码:

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()
  }
}
Run Code Online (Sandbox Code Playgroud)

我的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)
        }

    })
}
Run Code Online (Sandbox Code Playgroud)

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

The*_*ger 5

替换下面的行

var urlRequest = URLRequest(url: url!)
Run Code Online (Sandbox Code Playgroud)

var urlRequest = URLRequest(url: url!, cachePolicy: URLRequest.CachePolicy.reloadIgnoringCacheData, timeoutInterval: 60)
Run Code Online (Sandbox Code Playgroud)

从文档reloadIgnoringCacheData:指定应从源源加载URL加载的数据.不应使用现有的本地缓存数据(无论其新鲜度或有效性)来满足URL加载请求.

默认情况下,它使用缓存.