J'ai un fichier dans mon serveur web et je le télécharge dans mon application chaque fois que j'y accède car il est possible que le contenu du fichier soit modifié Mais s'il est modifié Je voudrais télécharger ce temps seulement si la bande passante peut être sauvée et heureusement c'est ce que ce ETag et Si-Aucun-Matchles champs d'en-tête sont pour.ETag et If-None-Match Les en-têtes HTTP ne fonctionnent pas
- Quand je fais une demande première fois, je récupère le ETag des en-têtes de réponse HTTP
Dans les requêtes suivantes pour télécharger ce fichier que je attachez la valeur Etag pour si-aucun-match en-tête de sorte que s'il n'y a aucun changement alors j'obtiendrais le code d'état de réponse de HTTP 304 ou bien j'obtiendrais 200 s'il y a un changement dans le dossier.
Note:
Lorsque je tente les étapes ci-dessus dans avancée REST application client en chrome, il fonctionne très bien comme il est censé être, mais lorsque je tente que iOS Je reçois toujours le code de réponse 200 mais il aurait dû me donner 304 pour les demandes suivantes.
Voici l'exemple de code que j'utilise
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)")
})
Voici la réponse
réponse: en option ({URL: http://10.12.1.101/Etag/ringtone1.mp3} {code d'état: 200, en-têtes { « Accept Gammes "= octets; Connexion =" Keep-Alive "; " Content-Length "= 221552; " Content-Type "=" audio/mpeg "; Date =" Mer, 24 Feb 2016 14:57:53 GMT"; Etag = "\" 36170-52c1cc36d9b40 \ ""; "Keep-Alive" = "timeout = 5, max = 100"; "Last-Modified" = "Ven, 19 Fév 2016 10:15:33 GMT"; Serveur = "Apache/2.4.16 (Unix) PHP/5.5.29"; }})
Qu'est-ce que je fais mal ici?
montrez-nous la demande générée. par exemple. en utilisant un serveur proxy (par exemple charles) –
@ Daij-Djan - Tout à coup, il a commencé à travailler! Je ne pouvais pas deviner pourquoi cette incohérence! –
@ Daij-Djan - Existe-t-il une dépendance pour E-tag à travailler autre que la configuration côté serveur? Mes doigts sont toujours croisés comment ça a commencé à fonctionner? –