Swift:
Hämta en webbsida

Vad & Varför?

Hämtning av en webbsida innebär att ladda ner dess HTML-innehåll. Programmörer gör detta för att läsa eller bearbeta information från webben.

Hur gör man:

Swift-kod för att hämta en webbsida ser ungefär så här ut:

import Foundation

let url = URL(string: "https://example.com")!
let task = URLSession.shared.dataTask(with: url) { data, response, error in
    if let error = error {
        print("Client error: \(error.localizedDescription)")
        return
    }
    
    guard let httpResponse = response as? HTTPURLResponse,
        (200...299).contains(httpResponse.statusCode) else {
        print("Server error")
        return
    }
    
    if let mimeType = httpResponse.mimeType, mimeType == "text/html",
       let data = data,
       let string = String(data: data, encoding: .utf8) {
        print(string)
    }
}

task.resume()

Exempelutdata:

<!doctype html>
<html>
  <head>
    <title>Exempelsida</title>
  </head>
  <body>
    <p>Hej från example.com!</p>
  </body>
</html>

Fördjupning

Att hämta en sida är inte nytt. Sedan internets begynnelse har vi laddat ner webbsidor, och metoder har förbättrats över tid. Från enkla HTTP GET-anrop i tidiga dagar till asynkrona bibliotek och ramverk idag.

Alternativ till URLSession inkluderar tredjepartsbibliotek som Alamofire eller AFNetworking (för äldre iOS-appar). Valet beror på behovet av avancerade funktioner eller enklare kodstruktur.

Implementationen ovan är grundläggande. Den hanterar inte omfattande felhantering, autentisering eller komplexa hjälptjänster (cookies, sessioner, headers). Även hantering av olika textkodningar och innehållstyper utöver text/html är en del av en fullständig lösning.

Se även