首页 > 解决方案 > Swift 获取请求返回未经授权

问题描述

我正在使用 get 请求从 predicthq 请求数据,出于某种原因,我不断收到 {"error": "unauthorized"}JSON 响应的响应。我现在已经更改了几次 API,但没有运气。我已经在 Postman 中尝试过,并且数据正在返回......

这是他们提供的 python 示例:

response = requests.get(
url="https://api.predicthq.com/v1/events",
headers={
  "Authorization": "Bearer $ACCESS_TOKEN",
  "Accept": "application/json"
}
)

这是我正在使用的请求,API 密钥是 100% 正确的,因为我用它在他们的网站上发出请求:

let url = URL(string: "https://api.predicthq.com/v1/events")
    guard let requestUrl = url else { fatalError() }
    // Create URL Request
    var request = URLRequest(url: requestUrl)
    // Headers
    request.addValue("Bearer \(token)", forHTTPHeaderField: "Authorization")
    request.addValue("application/json", forHTTPHeaderField: "Accept")
    // Specify HTTP Method to use
    request.httpMethod = "GET"
    // Send HTTP Request
    let task = URLSession.shared.dataTask(with: request) { (data, response, error) in

        // Check if Error took place
        if let error = error {
            print("Error took place \(error)")
            return
        }

        // Read HTTP Response Status code
        if let response = response as? HTTPURLResponse {
            print("Response HTTP Status code: \(response.statusCode)")
        }

        // Convert HTTP Response Data to a simple String
        if let data = data, let dataString = String(data: data, encoding: .utf8) {
            print("Response data string:\n \(dataString)")
        }

    }
    task.resume()

编辑:我也尝试过使用 AlamoFire 获得相同的结果。

let path = "https://api.predicthq.com/v1/events"
    let headers: HTTPHeaders = ["Authorization": "Bearer \(token)"]


    AF.request(path, method: .get, headers: headers)
        .responseJSON { (response) in
        if let data = response.data, let dataString = String(data: data, encoding: .utf8) {
            print("Response data string:\n \(dataString)")
        }
    }

标签: swift

解决方案


好的,问题已经确定。"https://api.predicthq.com/v1/events"最后需要 a /,它工作正常。


推荐阅读