Ven*_*rla 0 xcode nsurlrequest ios swift
我正在swift中进行HTTP get请求,因为某些原因我得到了过时的响应.我已经将Postman中的响应与我在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)
这就是我所有的人..如果有人知道发生了什么或者我做错了什么..请帮助..
替换下面的行
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加载请求.
默认情况下,它使用缓存.
归档时间: |
|
查看次数: |
117 次 |
最近记录: |