Swfit 4 JSON添加自定义头
如何在服务器上发送GET请求时添加自定义标头。 我试过了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
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?文档通常会告诉您如何使用它进行身份验证