ios - Alamofire 5:不尊重自定义 HTTP 标头
问题描述
我按照 Medium 上的本教程为新的 Alamofire 5 分支编写了一个路由器: https ://medium.com/@AladinWay/write-a-networking-layer-in-swift-4-using-alamofire-and-codable-第 1 部分-api-router-349699a47569
示例路由器在这里: https ://github.com/AladinWay/NetworkingExample/blob/master/Networking/APIClient/APIRouter.swift
标题设置如下:
// Common Headers
urlRequest.setValue(ContentType.json.rawValue, forHTTPHeaderField: HTTPHeaderField.acceptType.rawValue)
urlRequest.setValue(ContentType.json.rawValue, forHTTPHeaderField: HTTPHeaderField.contentType.rawValue)
但是,当我查看 Charles Proxy 时,标题实际上并没有正确设置:
因此,本教程中的代码库似乎无法实现它声称的功能。
您可以通过克隆和运行项目在您的计算机上本地复制并验证标头未在任何数据包嗅探器中设置:
我想使用 Alamofire 5,但我如何才能在请求中正确设置标头?我假设我需要用我自己的 URLSessionConfiguration 配置 Alamofire - 像这样?
import Alamofire
class APIClient {
@discardableResult
private static func performRequest<T:Decodable>(route:APIRouter,
decoder: JSONDecoder = JSONDecoder(),
completion:@escaping (Result<T>)->Void) -> DataRequest {
var defaultHeaders = Alamofire.SessionManager.defaultHTTPHeaders
defaultHeaders["Content-Type"] = "application/json"
defaultHeaders["Accept"] = "application/json"
let configuration = URLSessionConfiguration.default
configuration.httpAdditionalHeaders = defaultHeaders
let manager = Alamofire.SessionManager(configuration: configuration)
return manager.request(route).responseJSONDecodable (decoder: decoder){ (response: DataResponse<T>) in
completion(response.result)
}
}
我试过这个,但没有用。我是 Alamofire 5 的新手,所以我还不确定如何使用它。
帮助!
解决方案
推荐阅读
- xml - Xquery:如何过滤具有多个值的属性
- android - Google Play 游戏服务和 Google drive API 已弃用
- python - AWS 上的 Flask 无法识别控制器
- reactjs - 任何推荐的方法来按预定义的顺序顺序执行 Jest 测试?
- embedded-linux - 组织 Yocto 项目存储库(-ies)的推荐方法是什么?
- javascript - if - else if 具有假值的语句
- android - 构建 APK - 片段 buildConfig.class 错误
- centos - 邮件 -r 选项被忽略
- javascript - React Native - 如何水平滑动卡片并给它们留出边距
- amazon-web-services - 如何在本地服务器上配置 AWS 角色?