【发布时间】:2018-12-27 11:08:15
【问题描述】:
我正在快速发出一个 HTTP 获取请求,但由于某种原因我收到了一个过时的响应..我已经将 Postman 中的响应与我在 Xcode 中打印的响应进行了比较,我得到了这个..
Postman 中的响应标头:
在 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()
}
}
我的 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)
}
})
}
这就是我所拥有的一切......如果有人知道发生了什么或者我做错了什么......请帮助......
【问题讨论】:
-
您是否尝试过使用
URLRequest并请求类型为reloadIgnoringCacheData? -
@TheTiger No. 但是,怎么做?
-
检查
URLRequest的所有init方法。 -
@TheTiger 我刚做了它,它工作 OMG ..!非常感谢我的朋友..
-
太棒了!你介意接受它作为答案吗? ;)
标签: ios swift xcode nsurlrequest