Swift iOS没有设置“If-None-Match”标头标签

时间:2015-08-03 14:25:36

标签: ios swift caching afnetworking etag

在收到带有etag值的先前响应后,我无法迅速设置“If-None-Match”标头字段。

示例Swift代码

import UIKit
import XCPlayground

func singleRequest(callback: (Void -> Void)?) {
    let url = NSURL(string: "http://localhost:3000/")

    let request = NSMutableURLRequest(URL: url!, cachePolicy: NSURLRequestCachePolicy.UseProtocolCachePolicy, timeoutInterval: 10.0)
    NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue(), completionHandler: {
        (response, data, error) in
        callback?()
    })
}

XCPSetExecutionShouldContinueIndefinitely()

singleRequest({
    singleRequest({
    })
})

示例nodeJS服务器

var http = require('http');

  http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain', 'ETag':  '"075ced9bfb821b8d2d372ec9fccf95d1c"', 'Cache-Control' : 'private'});
    res.end('Your node.js server is running on localhost:3000');

}).listen(3000);

查看Wireshark中的请求显示,两者都没有设置“If-None-Match”标头字段。我希望第二个请求从第一个响应中获取ETag值。

我尝试使用

明确设置URLCache
let URLCache = NSURLCache(memoryCapacity: 4 * 1024 * 1024, diskCapacity: 20 * 1024 * 1024, diskPath: nil)
NSURLCache.setSharedURLCache(URLCache)

并使用NSURLSession,AFNetworking或AlamoFire代替NSURLConnection。似乎没什么用。

0 个答案:

没有答案