我的网络服务器中有一个文件,每次访问它时我都会将其下载到我的应用程序中,因为文件内容可能会被更改但如果它被更改,我只想下载那个时间,这样可以节省带宽,幸运的是这就是此ETag和If-None-Match 标头字段用于。
- 当我第一次发出请求时,我从 HTTP 响应标头中检索ETag
笔记:
当我在 chrome 中的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,标头{“接受范围”=字节;连接=“保持活动”;“内容长度” = 221552;“内容类型”=“音频/mpeg”;日期=“格林威治标准时间 2016 年 2 月 24 日星期三 14:57:53”;Etag =“\”36170-52c1cc36d9b40\“”;“保持活动”=“ timeout=5, max=100"; "Last-Modified" = "Fri, 19 Feb 2016 10:15:33 GMT"; Server = "Apache/2.4.16 (Unix) PHP/5.5.29"; } })
我在这里做错了什么?