我在Medium上按照本教程为新的Alamofire 5分支编写路由器: https://medium.com/@AladinWay/write-a-networking-layer-in-swift-4-using-alamofire-and-codable-part-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时,标题实际上并未正确设置:
因此,本教程中的代码库似乎无法实现其声称的功能。
您可以通过克隆和运行项目在您的计算机上进行本地重现,并验证是否未在任何数据包嗅探器中设置标头:
git clone https://github.com/AladinWay/NetworkingExample.git
我想使用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的新手,所以我不知道如何使用它。
帮助!