如何将JSON字符串添加到HTTP请求标头?

问题描述

这是我的请求功能

static func request(url:String,method: HTTPMethod,parameters: [String:AnyObject],completion: @escaping (Optional<AnyObject>) -> (),errorBlock:@escaping (String,Int) -> (Bool)){
    let url = URL(string: "\(kAPIHostname)\(url)")!
    var req = URLRequest(url: url)
    
    req.httpMethod = method.rawValue
    req.httpBody = try! JSONSerialization.data(withJSONObject: parameters,options: [])
    
    apimanager.process(request: req,completion: completion,errorBlock: errorBlock)
}

我想做的是将所有parameters而不是此处的正文添加到请求标头中。

有没有办法做到这一点?

解决方法

因此,如果标头使用参数字典,则应在 req.httpBody = ...

之前或之后添加此代码
var headerParameters: [String: String] = [:]
for header in parameters {
     headerParameters[header.key] = (header.value as? String ?? "")
}
req.allHTTPHeaderFields = headerParameters