【问题标题】:{"cod":401, "message": "Invalid API key on Open Weather API error using Moya{"cod":401, "message": "Invalid API key on Open Weather API error using Moya
【发布时间】:2019-11-08 19:13:54
【问题描述】:

所以我使用 moya 创建了一个 API 请求到 openweatherAPI。现在 Postman 的返回似乎没问题,但是 X-code 上的 API 调用返回 401: Invalid API key

我已经尝试了大多数方法来查看实际出了什么问题。但我似乎没有找到答案。

import Foundation
import Moya
import UIKit

enum WeatherAPI {

    case showCurrentWeather(cityName: String)
    case showForcasedWeather(cityName: String)
}

extension WeatherAPI: TargetType {

    var task: Task {
        switch self {
        case .showCurrentWeather(cityName: let cityName):
            let params = ["q":cityName , "APPID": Constants.WEATHER_API_KEY]
            return .requestParameters(parameters: params, encoding: JSONEncoding.default)
        case .showForcasedWeather(cityName: let cityName):
             let params = ["q":cityName , "APPID": Constants.WEATHER_API_KEY]
            return .requestParameters(parameters: params, encoding: JSONEncoding.default)
        }
    }

    var baseURL: URL {
        return URL(string: "https://api.openweathermap.org/data/2.5")!
    }

    var path: String {
        switch self {
        case .showCurrentWeather:
            return "/weather"
        case .showForcasedWeather:
            return "/forecast"
        }
    }

    var method: Moya.Method {
        switch self {
        case .showCurrentWeather:
            return .get
        case .showForcasedWeather:
            return .get
        }}

    var sampleData: Data {
        return Data()
    }

    var headers: [String : String]? {
        switch self {
        case .showCurrentWeather:
            return ["Content-type":"application/json"]
        case .showForcasedWeather:
            return ["Content-type":"application/json"]
        }
    }
}

https://api.openweathermap.org/data/2.5/weather?q=london&APPID=dbd3b02d8958d62185d02e944cd5f522

在 Postman 和浏览器上运行良好。

X 代码返回

"cod":401, "message": "API 密钥无效。请参阅http://openweathermap.org/faq#error401 了解更多信息。"}

【问题讨论】:

    标签: ios swift api moya


    【解决方案1】:

    您应该在 Task 变量中将此 JSONEncoding.default 更改为 URLEncoding.default

    【讨论】:

      猜你喜欢
      • 2022-12-28
      • 2018-10-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-15
      • 2016-11-04
      • 1970-01-01
      • 1970-01-01
      • 2023-02-07
      相关资源
      最近更新 更多