当前位置: 首页 > 面试题库 >

如何检索请求的Alamofire响应标头

酆鸿哲
2023-03-14
问题内容

如何检索请求的响应标头?以下是我提出的要求。

Alamofire.request(.GET, requestUrl, parameters:parameters, headers: headers)
        .responseJSON { response in switch response.result {
        case .Success(let JSON):

            ...

        case .Failure(let error):

            ...

    }

提前致谢!


问题答案:

如果响应为类型,则NSHTTPURLResponse可以从获取标头response.allHeaderFields

因此,当您使用Alamofire responseJSON时,可以像这样访问NSHTTPURLResponse属性:

Alamofire.request(.GET, requestUrl, parameters:parameters, headers: headers).responseJSON {
        response in
        print(response.response?.allHeaderFields)
}

正如苹果文件所说:

包含所有HTTP标头字段的字典,该字段作为服务器响应的一部分收到。通过检查此词典,客户端可以看到HTTP服务器返回的“原始”标头信息。

该词典中的关键字是从服务器收到的标头字段名称。有关常用的HTTP标头字段的列表,请参阅RFC 2616。

因此,例如要获取响应标头中的内容类型,您可以通过以下方式进行访问:

if let contentType = response.response?.allHeaderFields["Content-Type"] as? String {
        // use contentType here
}


 类似资料:
  • 我在Alamofire 5.3中收到了大量失败的请求,其中响应对象本身为nil,或者错误为“无法解析响应”。我可以从服务器日志中看到,所有这些请求都返回有效。 这是我的设置: API管理器类: AccessTokenInterceptor: 这个拦截器从插入我的授权令牌 我也使用标准路由器的URL刚需转换,编码是通过JSON序列化(字典)或可编码协议(对象) 奇怪的是,我不认为我在做任何不同于我使

  • 我使用的服务器在HTTP状态消息中返回错误消息。例如,它将返回“400个用户已经存在”,而不是“400个错误请求”。 我想访问Alamofire调用的响应方法中的字符串“用户已经存在”。但是,我找不到任何方法来访问这个字符串。 我已经在StackOverflow上发现了这个问题:Swift Alamofire:如何获取HTTP响应状态代码 不幸的是,没有人回答这个问题。:( 以下是Chrome显示

  • 问题内容: 我需要编写一个命令行客户端,以便在服务器上播放井字游戏。服务器接受http请求并将json发送回我的客户端。我正在寻找一种快速的方法,以使用Boost库发送http请求并以字符串形式接收json。 问题答案: 符合说明的最简单的事情: 这将收到完整的响应。您可以使用虚拟服务器对其进行测试:( 也可以 在Coliru上运行): 这将表明已收到请求,并且响应将由上面的客户代码写出。 请注意

  • 我是iOS和Swift的新手,我正在尝试使用AlamoFire3.4.0来做一个web请求。当我的请求成功时,一切都很好。但是,如果我的请求失败,服务器将返回300或更大的状态代码,以及响应体中的一些JSON,其中包含关于请求失败原因的更多信息。例如,我正在与之交谈的API要求对每个请求进行身份验证。如果身份验证由于某种原因失败,我将返回401,响应体中的JSON将为: 我发出此请求的代码如下所示

  • 我使用http代理通过CloseableHttpClient连接https网站。首先发送连接请求,因为它必须进行隧道连接。将发送响应头,我需要检索它们。结果将存储在变量中,稍后使用。 在HttpClient 4.2上,我可以使用HttpResponseInterceptor实现它: 但当我使用HttpClient 4.5时,我的响应拦截器从未在连接请求上被调用。它在GET或POST请求时直接跳转:

  • 也许这个问题是愚蠢的,但我正在寻找一种方法来创建可选的响应,就像Alamofire 4.0一样(例如,responseJSON,responseData,responseString等)。例如,在我的项目中,我有一个BaseService,它发出请求(使用alamofire),然后处理响应(对于错误,如果有,它调用一个异常类,显示一条消息并中断流程)。因此,我有从我的BaseService继承的子