2016-02-18 33 views
0

工作,如果我使用HEAD和頭"If-None-Match":ETag和ETag沒有在服務器上改變我得到304響應(這是偉大的)。如果我使用相同的標題,但GET,我得到200的響應。下面是兩個代碼,也許會有人發現我的錯誤:Alamofire GET如果 - 無 - 匹配不因某些原因

let headers = ["If-None-Match":ETag] 
Alamofire.request(.HEAD, useURL, headers: headers) 
    .response { response in 
     print(response!.statusCode) 
} 

Alamofire.request(.GET, useURL, headers: headers) 
    .response { response in 
     print(response?.statusCode) 
} 

編輯:有趣的事情只是happend - 我第一次跑了今天的應用程序,既給了我304,第二次GET給了200,HEAD 304

+0

你找到一個解決的辦法? – Cen92

+0

不,我想我做的收盤正在HEAD請求,如果數據發生了變化,我會做GET,這是不太好,但總比沒有好...... – Xernox

回答

1

試試這個:

的Xcode 8.1,斯威夫特3,Alamofire 4.0

var urlRequest = URLRequest(url: useURL) 
urlRequest.addValue(ETag, forHTTPHeaderField: "If-None-Match") 
urlRequest.cachePolicy = .reloadIgnoringCacheData 

Alamofire.request(urlRequest).response { result in // method defaults to .get 
    print(result.response?.statusCode) //Optional(304) 
} 
+0

Alamofire,默認情況下,試圖緩存請求。爲了控制這一點,得到了304,你需要告訴Alamofire打退堂鼓了。這就是爲什麼的CachePolicy設置是非常重要的。 –