Alamofire 5:不尊重自定义HTTP标头

时间:2018-05-08 19:57:07

标签: ios swift alamofire

我在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时,标题实际上并未正确设置:

enter image description here

因此,本教程中的代码库似乎无法实现其声称的功能。

您可以通过克隆和运行项目在您的计算机上进行本地重现,并验证是否未在任何数据包嗅探器中设置标头:

  

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的新手,所以我不知道如何使用它。

帮助!

0 个答案:

没有答案