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

Posted

技术标签:

【中文标题】如何将 JSON 字符串添加到 HTTP 请求标头?【英文标题】:How to add JSON String to an HTTP request header? 【发布时间】:2020-08-19 20:34:24 【问题描述】:

这是我的请求函数:

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而不是正文添加到请求标头中。

有没有办法做到这一点?

【问题讨论】:

【参考方案1】:

所以如果参数字典的标题,比在req.httpBody = ...

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

req.allHTTPHeaderFields = headerParameters

【讨论】:

以上是关于如何将 JSON 字符串添加到 HTTP 请求标头?的主要内容,如果未能解决你的问题,请参考以下文章

如何将授权标头添加到 Angular http 请求?

如何在使用 Cloud Scheduler 发出的 HTTP POST 请求上添加 JSON 正文?它会添加“Content-Type”:“application/json”标头吗?

如何将自定义 HTTP 请求标头添加到 Thymeleaf 生成的表单或链接?

Guzzle HTTP - 将授权标头直接添加到请求中

如何向每个标头添加 json Web 令牌?

如何在传入的http请求标头中添加授权令牌[关闭]