Alamofire 会话配置未反映在请求中

Posted

技术标签:

【中文标题】Alamofire 会话配置未反映在请求中【英文标题】:Alamofire session configurations are not reflected in the request 【发布时间】:2021-09-02 13:23:42 【问题描述】:

Alamofire 版本:5.1

我们正在修改我们的 alamofire 会话配置如下:

let apiManager: Session = 
        let configuration = URLSessionConfiguration.af.default
        configuration.timeoutIntervalForRequest = 20
        configuration.requestCachePolicy = .reloadIgnoringCacheData
        configuration.urlCache = nil
        let manager = Alamofire.Session(
            configuration: configuration,
            cachedResponseHandler:  ResponseCacher(behavior: .doNotCache)
        )
        return manager
    ()

我们提出如下要求

apiManager.request(
            url,
            method: .post,
            parameters: requestBodyParameters,
            encoding: JSONEncoding.default,
            headers: generateHeaders(enableAuth: authorisation) // to generate headers
        )
        .validate(statusCode: 200..<300)
        .responseJSON  response in
            print(response)
            
        
    

但是请求配置没有更新,它们保持默认值

[Timeout]
60
[Cache policy]
UseProtocolCachePolicy

【问题讨论】:

【参考方案1】:

您正在查看由 Alamofire 生成的 URLRequest,它不包含 URLSession 级别的配置,并且永远不会反映缓存自定义。如果您想查看实际的URLRequest 在通过Alamofire 和URLSession 后执行,您可以访问最新的URLSessionTask,通过使用@ 执行Alamofire Request(在本例中为DataRequest) 987654328@。但是,就像我说的那样,这永远不会反映您附加的其他行为,例如 ResponseCacher,因为它们存在于请求管道之外。

【讨论】:

当使用过期的访问令牌发出请求时,我也会收到错误消息。 CredStore - performQuery - 复制匹配的凭据时出错。错误=-25300,查询= class= inet; "m_Limit" = "m_LimitAll"; ptcl = htps; “r_Attributes” = 1; sdmn = "rffjjkqazc.execute-api.us-east-1.amazonaws.com"; srvr = "rffjjkqazc.execute-api.us-east-1.amazonaws.com";同步 = 同步;

以上是关于Alamofire 会话配置未反映在请求中的主要内容,如果未能解决你的问题,请参考以下文章

为啥不建议在 Alamofire 中修改授权标头的会话配置?

Alamofire 请求未执行

关闭时未调用 Alamofire 请求

如何在 Alamofire 获取请求中调用包含变量或常量的结构到字典中

Alamofire JSON 请求未从服务器中提取数据

表视图数据未在 Alamofire 发布请求调用 swift 3 中显示