ios - API 调用 swift 给出过时的响应

标签 ios swift xcode nsurlrequest

我正在快速发出 HTTP get 请求,但由于某种原因我收到了过时的响应。我将 Postman 中的响应与我在 Xcode 中打印的响应进行了比较,我得到了这个......

Postman 中的响应 header :

Postman response headers screenshot

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

Xcode console response headers screenshot

请参阅以绿色突出显示的部分,两个调用是同时进行的。这是我项目的实时 API,由于当前实时数据没有变化,我没有显示 JSON 响应。但是正如您在响应 header 中看到的那样,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()
  }
}

我的 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 加载请求。

默认情况下它使用缓存。

关于ios - API 调用 swift 给出过时的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53944048/

相关文章:

arrays - 数组和随机化的问题

ios - 动态显示 TableView 或 DetailView

ios - 使用 Swift 在 Google map 中获取位置详细信息

ios - ViewController 演示文稿 Swift 3

xcode - 无法识别的选择器 +[AFAnalytics sharedAnalytics]?

ios - ROBOVM + robopods + admob ios 绑定(bind)

ios - 如何在 iOS 中的特定时间启动和停止计时器

ios - 一些 startBrowsingForNearbyPlayersWithReachableHandler 的问题

ios - Storyboard实例化 View Controller ,崩溃

ios - 从 url 方案中获取文本字符串在 appdelegate 中有效,但在 viewcontroller 中无效