Swift - URLSession: Unterschied zwischen den Versionen
Aus Wikizone
| Zeile 13: | Zeile 13: | ||
=== Beispiel === | === Beispiel === | ||
<syntaxhighlight lang="swift"> | <syntaxhighlight lang="swift"> | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
struct WeatherManager{ | struct WeatherManager{ | ||
| Zeile 55: | Zeile 46: | ||
} | } | ||
} | } | ||
| + | </syntaxhighlight> | ||
| + | Oder besser mit Closure statt separater Funktion: | ||
| + | |||
| + | <syntaxhighlight lang="swift"> | ||
| + | struct WeatherManager{ | ||
| + | |||
| + | let weatherURL = "https://api.openweathermap.org/data/2.5/weather?units=metric&appid=63981dbcfa548021dd77394d24f34674" | ||
| + | |||
| + | func fetchWeather(cityName: String){ | ||
| + | let urlString = "\(weatherURL)&q=\(cityName)" | ||
| + | performRequest(urlString: urlString) | ||
| + | } | ||
| + | |||
| + | func performRequest(urlString: String){ | ||
| + | // 1. create URL | ||
| + | if let url = URL(string: urlString) { | ||
| + | // 2. create URLSession | ||
| + | let session = URLSession(configuration: .default) | ||
| + | // 3. give session a task | ||
| + | let task = session.dataTask(with: url) { data, response, error in | ||
| + | if error != nil { | ||
| + | print(error!) | ||
| + | return | ||
| + | } | ||
| + | if let safeData = data { | ||
| + | let dataString = String(data: safeData, encoding: .utf8) | ||
| + | print(dataString!) | ||
| + | } | ||
| + | } | ||
| + | // 4. start the task | ||
| + | task.resume() | ||
| + | } | ||
| + | } | ||
| + | |||
| + | func handle(data: Data?, response: URLResponse?, error: Error?){ | ||
| + | if error != nil { | ||
| + | print(error!) | ||
| + | return | ||
| + | } | ||
| + | if let safeData = data { | ||
| + | let dataString = String(data: safeData, encoding: .utf8) | ||
| + | print(dataString!) | ||
| + | } | ||
| + | } | ||
| + | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Version vom 17. Januar 2023, 22:11 Uhr
Links
Swift (Programmiersprache)
Einführung
Mit URLSession kannst du Anfragen an einen Webserver generieren und Antworten verarbeiten.
Schritte
- Create a URL
- Create a URLSession (kind of Browser Object)
- Give URLSession a Task (give the browser a url to fetch)
- Start the task
Beispiel
struct WeatherManager{
let weatherURL = "https://api.openweathermap.org/data/2.5/weather?units=metric&appid=63981dbcfa548021dd77394d24f34674"
func fetchWeather(cityName: String){
let urlString = "\(weatherURL)&q=\(cityName)"
performRequest(urlString: urlString)
}
func performRequest(urlString: String){
// 1. create URL
if let url = URL(string: urlString) {
// 2. create URLSession
let session = URLSession(configuration: .default)
// 3. give session a task
let task = session.dataTask(with: url, completionHandler: handle(data:response:error:))
// 4. start the task
task.resume()
}
}
func handle(data: Data?, response: URLResponse?, error: Error?){
if error != nil {
print(error!)
return
}
if let safeData = data {
let dataString = String(data: safeData, encoding: .utf8)
print(dataString!)
}
}
}
Oder besser mit Closure statt separater Funktion:
struct WeatherManager{
let weatherURL = "https://api.openweathermap.org/data/2.5/weather?units=metric&appid=63981dbcfa548021dd77394d24f34674"
func fetchWeather(cityName: String){
let urlString = "\(weatherURL)&q=\(cityName)"
performRequest(urlString: urlString)
}
func performRequest(urlString: String){
// 1. create URL
if let url = URL(string: urlString) {
// 2. create URLSession
let session = URLSession(configuration: .default)
// 3. give session a task
let task = session.dataTask(with: url) { data, response, error in
if error != nil {
print(error!)
return
}
if let safeData = data {
let dataString = String(data: safeData, encoding: .utf8)
print(dataString!)
}
}
// 4. start the task
task.resume()
}
}
func handle(data: Data?, response: URLResponse?, error: Error?){
if error != nil {
print(error!)
return
}
if let safeData = data {
let dataString = String(data: safeData, encoding: .utf8)
print(dataString!)
}
}
}