json – Alamofire错误域= NSURLErrorDomain代码= -999“已取消
我已经成功获得了令牌的钥匙串并将其传递给下面显示的AccessTokenAdapter类.
http127.0.0.1:8000 / api2 / projects /?format = json作为projectsURL传递. class AccessTokenAdapter: RequestAdapter { private let accessToken: String init(accessToken: String) { self.accessToken = accessToken } func adapt(_ urlRequest: URLRequest) throws -> URLRequest { var urlRequest = urlRequest // print("JWT (accessToken)") urlRequest.setValue("JWT (accessToken)",forHTTPHeaderField: "Authorization") return urlRequest } } let sessionManager = SessionManager() sessionManager.adapter = AccessTokenAdapter(accessToken: self.keychain["token"]!) sessionManager.request(self.projectsURL,method: .get,encoding: JSONEncoding.default).responseJSON{ response in switch response.result { case .success: print("yey I made it") case .failure(let error): print(error) } } 但是,从打印(错误),我的Xcode显示错误 有任何想法吗? 解决方法
当你使sessionManager成为一个常量时,它不会比拥抱它的功能更长寿,因此一旦管理器被释放,会话就会结束.
要解决此问题,请将sessionManager保持更长时间.例如,在我的情况下,我使它成为一个类属性: class NetworkRequest: { var sessionManager = Alamofire.SessionManager() ... func performRequest(_ call: APICall,customLink: String = "",parameters: Dictionary<String,Any> = ["":"" as Any]) { let sessionConfig = URLSessionConfiguration.default sessionConfig.timeoutIntervalForRequest = call.suggestedTimeout() sessionConfig.timeoutIntervalForResource = call.suggestedTimeout() sessionManager = Alamofire.SessionManager(configuration: sessionConfig) sessionManager.adapter = AccessTokenAdapter() sessionManager.request(urlString,method: call.method(),parameters: parameters,encoding: call.chooseEncoding(),headers: [:]) .responseJSON { response in ... } } 根据您的具体情况,解决方案可能会有所不同,但其目的是让sessionManager保持活动状态,直到网络请求结束. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |