当我用Alamofire发送两次GET请求时,我会得到相同的响应,但我期待的是不同的响应.我想知道这是否是因为缓存,如果是这样,我想知道如何禁用它.
当我用Alamofire发送两次GET请求时,我会得到相同的响应,但我期待的是不同的响应.我想知道这是否是因为缓存,如果是这样,我想知道如何禁用它.
Swift 3号,阿拉莫菲尔4号
我的解决方案是:
正在为Alamofire创建扩展:
extension Alamofire.SessionManager{
@discardableResult
open func requestWithoutCache(
_ url: URLConvertible,
method: HTTPMethod = .get,
parameters: Parameters? = nil,
encoding: ParameterEncoding = URLEncoding.default,
headers: HTTPHeaders? = nil)// also you can add URLRequest.CachePolicy here as parameter
-> DataRequest
{
do {
var urlRequest = try URLRequest(url: url, method: method, headers: headers)
urlRequest.cachePolicy = .reloadIgnoringCacheData // <<== Cache disabled
let encodedURLRequest = try encoding.encode(urlRequest, with: parameters)
return request(encodedURLRequest)
} catch {
// TODO: find a better way to handle error
print(error)
return request(URLRequest(url: URL(string: "http://example.com/wrong_request")!))
}
}
}
使用它:
Alamofire.SessionManager.default
.requestWithoutCache("https://google.com/").response { response in
print("Request: \(response.request)")
print("Response: \(response.response)")
print("Error: \(response.error)")
}