У меня есть файл в моем веб-сервере, и я загружаю его в свое приложение каждый раз, когда я обращаюсь к нему, потому что его возможное изменение содержимого файла может быть изменено. Но если оно изменено Я хотел бы загрузить это время только для того, чтобы сохранить пропускную способность и, к счастью, вот что это ETag и If-None-Matchполя заголовка для.HTTP-заголовки ETag и If-None-Match не работают
- Когда я делаю запрос в первый раз, я извлечь ETag из заголовков ответа HTTP
В последующих запросах, чтобы скачать этот файл я приложите Etag значение для If-None-Match headerfield, чтобы при отсутствии изменений то я получаю код ответа HTTP-ответа 304, иначе я бы получил 200, если есть изменение в файле.
Примечание:
При попытке вышеуказанные шаги в Advanced REST Client Application в хроме работает хорошо, как это должно быть, но когда я пытаюсь что в iOS Я всегда получаю код ответа 200, но он должен был дать мне 304 для последующих запросов.
Вот пример кода я использую
var request1 = NSMutableURLRequest(URL:NSURL(string: "http://10.12.1.101/Etag/ringtone1.mp3")!)
let Etagvalue="\"36170-52c1cc36d9b40\""
var session1 = NSURLSession.sharedSession()
request1.HTTPMethod = "GET"
var err: NSError?
request1.addValue(Etagvalue, forHTTPHeaderField: "If-None-Match")
var task = session1.dataTaskWithRequest(request1, completionHandler: {data, response, error -> Void in
print("response: \(response)")
})
Вот ответ
Ответ: Необязательно ({URL: http://10.12.1.101/Etag/ringtone1.mp3} {код состояния: 200, заголовки { «Accept- Диапазоны "= байты Соединение =" Keep-Alive "; " Content-Length "= 221552; " Content-Type "=" audio/mpeg "; Дата =" ср, 24 фев 2016 14:57:53 ВРЕМЯ ПО ГРИНВИЧУ"; Etag = "\" 36170-52c1cc36d9b40 \ ""; «Keep-Alive» = «timeout = 5, max = 100»; "Last-Modified" = "Пт, 19 февраля 2016 10:15:33 GMT"; Сервер = "Apache/2.4.16 (Unix) PHP/5.5.29"; }})
Что я здесь делаю неправильно?
показать нам запрос. например используя прокси-сервер (например, charles) –
@ Daij-Djan - Внезапно он начал работать! Я не мог догадаться, почему эта непоследовательность! –
@ Daij-Djan - есть ли зависимость для работы E-тега, отличная от конфигурации на стороне сервера? Мои пальцы все еще пересекаются, как он начал работать? –