1
我正在与JWT令牌和Alamofire一起使用Swift。我的问题是,当请求返回nil时,我希望request-method运行refreshToken()方法并重试HTTP请求。我的代码看起来像这样。我试图自己跑,但没有成功。 :(完成处理程序内的完成处理程序?
// Internal method used for the HTTP methods
private func request<A>(resource: Resource<A>, method: Alamofire.HTTPMethod, parameters: [String:String], completion: @escaping (A?) ->()) {
let requestUrl = self.baseurl.absoluteString + resource.url.absoluteString + "?token=" + self.loginManager.getFromKeychain().token!
Alamofire.request(requestUrl, method: method, parameters: parameters).response { response in
// Check if response need reauth
if(response.response?.statusCode == 401 || response.response?.statusCode == 400) {
self.refreshToken(completion: { result in
if(result) {
print("Token got refreshed")
// How do i make the request again?
}
})
}
guard let data = response.data else {
completion(nil)
return
}
completion(resource.parse(data as NSData))
}
}
你可以给你的主要方法完成处理程序添加更多的参数,你的方法再次提出请求时,你会得到您的401状态代码 – guiltance
您能给我举一个例子吗? –