【发布时间】:2018-03-23 14:59:50
【问题描述】:
我正在请求如下 JSON-API:
var request = URLRequest(url: url)
request.httpMethod = "GET"
request.addValue(CredentialsProvider.shared.credentials, forHTTPHeaderField: "Authorization")
let task = URLSession.shared.dataTask(with: request as URLRequest) { data, response, error in
guard let data = data, let _ = response, error == nil else {
return
}
let response1 = response as! HTTPURLResponse
print(response1.statusCode) // 200 instead of 304
}
由于服务器进行缓存(我通过 CharlesProxy 验证),我希望状态码 304 但记录了 200 - 有没有办法获得“真实”状态码?
【问题讨论】:
-
您确定您的后端在您想要的用例中指定了状态 ode 304?
-
@murphguy 是的,正如 CharlesProxy 所说的
-
您是否还需要将
If-Modified-Since传递到标头中,以便它成为有条件的获取请求,而不是您那里的非条件获取请求 -
试试这个
request.cachePolicy = .reloadIgnoringCacheData -
它应该是
"POST"而不是"GET"。如果您只需要下载,则无需使用URLRequest,除非您只获取标题。顺便说一句let _ = response毫无意义
标签: swift urlsession