я тестирую библиотеку XMLParsing
(использующий протокол Codable с запросом XML)
Ссылка на библиотеку XMLParsing:
https://github.com/ShawnMoore/XMLParsing
с https://openweathermap.org API
ссылка API
«http://api.openweathermap.org/data/2.5/weather"
моя модель
struct weather:Codable {
let q : String
let appid : String
let mode : String
}
и запрос
var request = URLRequest(url: URL(string: "http://api.openweathermap.org/data/2.5/weather")!)
request.httpMethod = "POST"
let post2 = weather(q: "london", appid: "f4be702b940e5073d765cb2473f0b31b", mode: "xml")
do{
let body = try XMLEncoder().encode(post2, withRootKey: "current")
request.httpBody = body
} catch{}
let session = URLSession.shared
let task = session.dataTask(with: request) { data, response, error in
if error != nil {
print("error: \(String(describing: error))")// Handle error…
return
}
guard let data = data else {return }
print("response: \(response)")
print("data: \(data)")
}
task.resume()
Я не знаю, в чем проблема!
Я всегда получаю код ошибки 401
response: Optional(<NSHTTPURLResponse: 0x600003bdedc0> { URL: http://api.openweathermap.org/data/2.5/weather } { Status Code: 401, Headers {
"Access-Control-Allow-Credentials" = (
true
);
"Access-Control-Allow-Methods" = (
"GET, POST"
);
"Access-Control-Allow-Origin" = (
"*"
);
Connection = (
"keep-alive"
);
"Content-Length" = (
107
);
"Content-Type" = (
"application/json; charset=utf-8"
);
Date = (
"Mon, 14 Jan 2019 07:14:16 GMT"
);
Server = (
openresty
);
"X-Cache-Key" = (
"/data/2.5/weather?"
);
} })
data: 107 bytes
но в PostMan он работает нормально и получает текущие данные