更改Alamofire中所有请求的HTTP标头

时间:2016-11-14 20:38:20

标签: swift http-headers alamofire nsurlrequest

我正在使用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 }
}

有解决方法吗?

1 个答案:

答案 0 :(得分:0)

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

您可以通过参数inout

来解决此问题
public func request(request: inout URLRequestConvertible) -> Request {
    ...
}

呼叫站点,您还必须明确标记参数:

let myRequest = ...
request(&myRequest)

注意:

  • 如果问题是可访问性,则表示您收到了编译错误。
  • 官方编码风格指南告诉我们使用小写字母表示变量。
  • 使用类型作为变量名称的信息量不大;有一个相同名称的方法甚至更少。