Swfit 4 JSON添加自定义头

Swfit 4 JSON添加自定义头,json,swift,request,swift4,Json,Swift,Request,Swift4,如何在服务器上发送GET请求时添加自定义标头。 我试过了 var request = URLRequest(url: URL(string: URL)!) request.httpMethod = "GET" // request.addValue("2", forHTTPHeaderField: "x-api-version") request.addValue("Bearer \(token)", forHTTPHeaderField: "Authori

如何在服务器上发送GET请求时添加自定义标头。 我试过了

var request = URLRequest(url: URL(string: URL)!)
    request.httpMethod = "GET"
    //        request.addValue("2", forHTTPHeaderField: "x-api-version")
    request.addValue("Bearer \(token)", forHTTPHeaderField: "Authorization")
    request.addValue("application/json", forHTTPHeaderField: "Accept")
另外,我是初学者,如果有任何错误,请指出并帮助我改进。提前感谢。

请尝试以下代码:

func setHeader() -> [String : String] {
    let dictionary = [
        "Accept":"application/json",
        "Content-Type":"application/json",
        "Authorization": "your_authtoken"
        // more headers here
    ]
    return dictionary
}

// calling
request(endPoint, method: .post, parameters: params, encoding:JSONEncoding.default, headers: setHeader())

如果您的目的是使用令牌对API进行身份验证,则为
授权
头设置了错误的格式。令牌授权也称为“承载授权”,格式如下:

let url = URL(string: "https://httpbin.org/get")!
let token = "abcdef"

var request = URLRequest(url: url)
request.httpMethod = "GET"
request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization")

URLSession.shared.dataTask(with: request) { data, response, error in
    guard error == nil else { print(error!); return }
    guard let data = data else { print("No data"); return }

    if let str = String(data: data, encoding: .utf8) {
        print(str)
    }
}.resume()

您不需要
内容类型
标题,因为GET请求没有正文内容。

您以正确的方式添加了它,除了添加授权标题字段。苹果说你不应该这样做。您的问题是什么?我无法获取数据,它通常会抛出401个未经验证的错误谢谢您的快速帮助,内容类型是否必要?您是否使用alamofire?实际上,我提供的所有ans都与alamofire兼容,为此,您只需安装
pod'Alamofire'
并导入您想要使用的库,然后使用我的ans。我正在寻找答案,但没有使用任何库。无论如何,谢谢你的帮助。我刚刚尝试再次使用你的代码段,仍然得到验证错误。你使用的是什么API?文档通常会告诉您如何使用它进行身份验证