172 похожих чатов

Здравствуйте, такая проблема, пытаюсь получить информацию в апишке и прилетает

такая ошибка "The data couldn’t be read because it isn’t in the correct format." Вот мой код:

import Foundation

typealias Response = (Result<CodableProtocol, Error>) -> Void

class APIClient {

static let shared = APIClient()
private let session = URLSession.shared

func getWeather(completion: @escaping Response) {
let headers = [
"x-rapidapi-host": "weatherbit-v1-mashape.p.rapidapi.com",
"x-rapidapi-key": "e5383be9c1mshb69181b6433a8fcp173fb8jsn803ad90061ff"
]
let url = "https://weatherbit-v1-mashape.p.rapidapi.com/forecast/current"
guard var component = URLComponents(string: url) else {
completion(.failure(APIClientError.invalidComponent))
return
}
component.queryItems = [
URLQueryItem(name: "lat", value: "49.8419"),
URLQueryItem(name: "lon", value: "24.0315")
]

guard let urlComponent = component.url else {
completion(.failure(APIClientError.invalidURL))
return
}
var request = URLRequest(url: urlComponent)
request.httpMethod = APIRequest.get.rawValue
request.allHTTPHeaderFields = headers

session.dataTask(with: request, completionHandler: { data, response, error -> Void in
if let err = error {
completion(.failure(err))
return
}
do {
let weatherDecoded: CurrentWeather = try JSONDecoder().decode(CurrentWeather.self, from: data ?? Data())
completion(.success(weatherDecoded))
} catch {
completion(.failure(error))
// print(error.localizedDescription)
}
}).resume()
}
}

8 ответов

17 просмотров

у тебя с запросом что то неверно - ты видел, что тебе возвращает сервак? <html> <head><title>500 Internal Server Error</title></head> <body bgcolor="white"> <center><h1>500 Internal Server Error</h1></center> <hr><center>openresty/1.11.2.2</center> </body> </html>

Larik🧚🏻✨- Автор вопроса
Larik🧚🏻✨
Я в postman’e тестил и все работало

Перед do в твоем коде добавь эти строки и ты увидишь, что тебе отвечает сервер let str = String(decoding: data!, as: UTF8.self) print(str)

Larik🧚🏻✨
Окей, спасибо, посмотрю

Можешь просто в терминале запускать - тот же ответ curl --location --request GET 'https://weatherbit-v1-mashape.p.rapidapi.com/forecast/current' \ --header 'x-rapidapi-host: weatherbit-v1-mashape.p.rapidapi.com' \ --header 'x-rapidapi-key: e5383be9c1mshb69181b6433a8fcp173fb8jsn803ad90061ff'

Larik🧚🏻✨- Автор вопроса
Sergey M
Можешь просто в терминале запускать - тот же ответ...

Но я все равно не понимаю как это решить?

Larik🧚🏻✨
Но я все равно не понимаю как это решить?

показывай запрос постмана который работал. МОжно в личку

Larik🧚🏻✨
Но я все равно не понимаю как это решить?

у меня работает без forecast в урле - let url = "https://weatherbit-v1-mashape.p.rapidapi.com/current"

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта