【问题标题】:change HTTP headers for all requests in Alamofire更改 Alamofire 中所有请求的 HTTP 标头
【发布时间】:2016-11-14 20:38:20
【问题描述】:

我正在使用 Alamofire 进行网络通话。

主要功能为:

public func request(URLRequest: URLRequestConvertible) -> Request {

...

    return request
}

所以我创建了我的 URLRequestConvertible 并运行了 Alamofire 的 request 方法。虽然我也尝试添加 HTTP 标头。

public func request(URLRequest: URLRequestConvertible) -> Request {

URLRequest.setValue("\random()" , forHTTPHeaderField : "identifier"
URLRequest.setValue("\buildversion()" , forHTTPHeaderField : "build"

    return request
}

但是没有任何反应,没有添加任何标题!仅存在 请求方法调用之前添加的标头。

问题是我相信 URLRequest 只是get 而我不能set 它。有什么解决办法吗?

public protocol URLRequestConvertible {
    /// The URL request.
    var URLRequest: NSMutableURLRequest { get }
}

有什么解决办法吗?

【问题讨论】:

    标签: swift http-headers alamofire nsurlrequest


    【解决方案1】:

    URLRequest 是一个结构体,因此您可以修改方法本地副本;变化永远不会传播到外部。

    你可以通过设置参数inout来解决这个问题:

    public func request(request: inout URLRequestConvertible) -> Request {
        ...
    }
    

    调用站点,您还必须明确标记参数:

    let myRequest = ...
    request(&myRequest)
    

    注意事项:

    • 如果可访问性是问题所在,您会收到编译器错误。
    • 官方编码风格指南告诉我们对变量使用小写字母。
    • 使用类型作为变量名的信息量不是很大;具有相同名称的方法就更少了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-23
      • 2011-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多