{"cod": 401, "message": "Неверный ключ API при ошибке API Open Weather с использованием Moya - PullRequest
0 голосов
/ 26 июня 2019

Поэтому я использовал мойя для создания запроса API к openweatherAPI. Теперь кажется, что возвращение Postman в порядке, но вызовы API для X-кода возвращают 401: Неверный ключ API

Я пробовал большинство способов увидеть, что на самом деле не так. Но я не вижу ответа.

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

отлично работает на Почтальоне и браузерах.

X-код возвращает

"cod": 401, "message": "Неверный ключ API. Для получения дополнительной информации см. http://openweathermap.org/faq#error401."}

1 Ответ

0 голосов
/ 26 июня 2019

Вы должны изменить это JSONEncoding.default на URLEncoding.default в переменной Task.

...