Я запрашиваю 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 - есть ли способ получить «настоящий» код состояния?
If-Modified-Since
в заголовок, чтобы он стал условным запросом на получение, в отличие от неусловного запроса на получение, который у вас есть. - person TNguyen   schedule 12.10.2017request.cachePolicy = .reloadIgnoringCacheData
- person Vini App   schedule 12.10.2017"POST"
, а не"GET"
. Если вам просто нужно скачать, нет необходимости использоватьURLRequest
, если только вы не собираетесь получать только заголовок. Кстатиlet _ = response
бессмысленно - person Leo Dabus   schedule 12.10.2017let _ = response
приведет к возврату замыкания, если переменная ответа равна нулю. - person ekreloff   schedule 12.10.2017guard let httpURLResponse = response as? HTTPURLResponse, httpURLResponse.statusCode == 200, let data = data, error == nil
- person Leo Dabus   schedule 12.10.2017"POST"
вместо"GET"
, если он ожидает код состояния304
, который вообще не имеет никакого смысла. 304 возвращается только по условному запросу на получение. - person TNguyen   schedule 12.10.2017downloadTask
вместоdataTask
. - person caseynolan   schedule 12.10.2017304
, в приложении вижу200
. - person swalkner   schedule 12.10.2017304
, только я не вижу его в приложении... - person swalkner   schedule 12.10.2017