2015-01-13 44 views
8

我对Rest(POST)请求使用Alamofire并无缝地获取JSON响应。但我只能访问响应主体。我想获得响应标题。使用Alamofire不可能吗?在Swift中使用Alamofire时如何获得响应标题?

这里是我的代码片段:

@IBAction func loginButtonPressed(sender: UIButton) { 
    let baseUrl = Globals.ApiConstants.baseUrl 
    let endPoint = Globals.ApiConstants.EndPoints.authorize 

    let parameters = [ 
     "apikey": "api_key_is_here", 
     "apipass": "api_pass_is_here", 
     "agent": "agent_is_here" 
    ] 

    Alamofire.request(.POST, baseUrl + endPoint, parameters: parameters).responseJSON { 
     (request, response, data, error) in let json = JSON(data!) 

     if let result = json["result"].bool { 
      self.lblResult.text = "result: \(result)" 
     } 
    } 
} 
+2

我没有Alamofire的经验,但是在完成关闭时没有'response' NS HTTPURLResponse'具有'allHeaderFields'属性? –

回答

24

由于反应是NSHTTPURLResponse类型的,你应该能够得到标题如下:

response.allHeaderFields 
+1

如果响应是NSHTTPURLResponse类型,那么您不必再施放它了。 –

+1

是的,您是对的。当我使用Moya时,我需要演员阵容,因为它会以NSURLResponse的形式返回响应。编辑我的答案! – Antoine

+0

伟大的我正在寻找如何使用Moya,只需要深入您的编辑:)谢谢! – VivienG

3

下面是如何访问响应头在Swift 3中:

Alamofire.request(.GET, requestUrl, parameters:parameters, headers: headers) 
    .responseJSON { response in 
    if let headers = response.response?.allHeaderFields as? [String: String]{ 
     let header = headers["token"] 
     // ... 
    } 
} 
相关问题