因此我使用 moya 创建了一个对 openweatherAPI 的 API 请求。现在 Postman 的返回似乎没问题,但 X 代码上的 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 了解更多信息。"}
您应该在任务变量中将JSONEncoding.default更改为URLEncoding.default。
不知道这个对你是否有效,你可以尝试一下。 将“appId”更改为“key” 喜欢: 取(
//api.openweathermap.org/data/2.5/weather?lat=44.34&lon=10.99&key=${api_key}
)
这样对我有用!