Я использую weatherapi.com init URL(string: urlString). Полученная ссылка работает в браузере, но приложение не получает по ней данные. В чем дело?

Я использую weatherapi.com init URL(string: urlString). Полученная ссылка работает в браузере, но приложение не получает по ней данные. Код ниже

func ferchFromServer(cityName: String) {
        let urlString = "https://api.weatherapi.com/v1/current.json?key=\(apikey!)&q=\(cityName)"
        let url = URL(string: urlString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!)
        print(url!)
        let session = URLSession(configuration: .default)
        let task = session.dataTask(with: url!) { (data, response, error) in
            if let receivedData = data {
                if let datas = self.parseJSON(data: receivedData){
                    self.delegate?.updateInterface(self, datas: datas)
                }
                
            }
        }
        task.resume()
    }


print(url) > https://api.weatherapi.com/v1/current.json?key=<MYKEY>&q=New%20York

Это рабочая ссылка и есть ее вставить в браузер, приходит нужный ответ (Ключ скрыл)

Но приложение выписывает в консоль это >
The data couldn’t be read because it isn’t in the correct format.


P.S. Если я использую город из одного слова как Москва или Стамбул, то все работает корректно и приложение получает данные, такая проблема с городами из двух и более слов
  • Вопрос задан
  • 192 просмотра
Пригласить эксперта
Ответы на вопрос 1
@mstrepetov
Попробуйте в переменной cityName не использовать пробел (%20) как разделитель. А используйте короткое тире
https://api.weatherapi.com/v1/current.json?key=&q=... возвращает корректные данные
https://api.weatherapi.com/v1/current.json?key=&q=... тоже возвращает корректные данные, но + лучше не использовать в строке адреса )))

Где вы учитесь?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы