我正在尝试从标头中具有必需api键的URL检索数据。当我将其输入任何浏览器并打印出JSON数据时,该URL即可工作,但是当我尝试从swift5提取数据时,出现401错误。我是新手,我认为这可能是我创建请求的方式。我尝试使用不需要api键的URL从同一应用程序发出另一个请求,并且我能够无错误地打印和操作JSON数据。我也允许此测试应用程序进行ATS任意加载,因为它是一个http地址。
下面是我正在使用的代码。我尝试使用setValue或addValue进行多种变体,并更改了Authorization字段值,以在my_api-key之前包含Basic或Bearer。我想不使用Alamo来执行此操作。预先感谢您的帮助。
let url2 = URL(string: "http://some.website.org/folder")
guard let requestUrl = url2 else { fatalError() }
var request2 = URLRequest(url: requestUrl)
request2.httpMethod = "POST"
request2.setValue("application/json", forHTTPHeaderField: "Accept")
request2.setValue("application/json", forHTTPHeaderField: "Content-Type")
request2.setValue("my_api_key", forHTTPHeaderField: "Authorization")
let task2 = URLSession.shared.dataTask(with: request2) { (data, response, error) in
// Check for Error
if let error = error {
print("Error took place \(error)")
return
}
// Convert HTTP Response Data to a String
if let data = data, let dataString = String(data: data, encoding: .utf8) {
print("Response data string:\n \(dataString)")
}
}
task2.resume()
var request = URLRequest(url: url)
var defaultHeaders = request.allHTTPHeaderFields ?? [:]
defaultHeaders["Authorization"] = "my_api_key"
request.allHTTPHeaderFields = defaultHeaders