从swift中的请求响应中获取头数据

时间:2016-04-15 08:12:06

标签: swift api rest http-headers

我想在一个标题请求中获得X-Dem-Auth,并在我的应用程序中使用swift来存储它。

参见回复:

headers {
    "Content-Length" = 95;
        "Content-Type" = "application/json; charset=utf-8";
        Date = "Fri, 15 Apr 2016 08:01:58 GMT";
        Server = "Apache/2.4.18 (Unix)";
        "X-Dem-Auth" = null;
        "X-Powered-By" = Express;

2 个答案:

答案 0 :(得分:11)

如果回复的类型为NSHTTPURLResponse,您可以从response.allHeaderFields

获取标头

正如苹果文档所说:

  

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

     

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

因此,要获得例如响应标头中的X-Dem-Auth,您可以通过这种方式访问​​它:

if let httpResponse = response as? NSHTTPURLResponse {
     if let xDemAuth = httpResponse.allHeaderFields["X-Dem-Auth"] as? String {
        // use X-Dem-Auth here
     }
}

<强> 更新

由于Evan R的评论而更新

if let httpResponse = response as? HTTPURLResponse {
     if let xDemAuth = httpResponse.allHeaderFields["X-Dem-Auth"] as? String {
        // use X-Dem-Auth here
     }
}

答案 1 :(得分:0)

适用于 iOS 13 及更高版本的更新。

我建议如果响应是 HTTPURLResponse 类型并且您只想获取特定的标头值。那么下面是一个更好的方法。

if let httpResponse = response as? HTTPURLResponse {
     if let xDemAuth = httpResponse.value(forHTTPHeaderField: "X-Dem-Auth") as? String {
        // use X-Dem-Auth here
     }
}