• Wieder einmal haben uns unsere Apfeltalker tolle Fotos zur Abstimmung eingesandt. Welches ist Euer Favorit? Stimmt mit ab! Hier geht es zur Abstimmung --> Klick
  • Es ist bereits Apfeltalk-Tradition und wir möchten sie auch in diesem Jahr fortsetzen: Unser Apfeltalk-Weihnachtslogo-Wettbewerb hat begonnen! Gestaltet für uns das Weihnachtsbanner, das im Monat Dezember bis zum Weihnachtsfest unsere Webseite schmücken soll. Lasst Eurer Kreativität freien Lauf! Hier geht es zum Wettbewerb --> Klick

"HTTP Auth" in Swift

belinea

deaktivierter Benutzer
Registriert
12.07.08
Beiträge
351
Mit folgendem Beispiel lässt sich der Inhalt einer Webseite laden. Ist eine Seite mit HTTP-Auth geschützt, dann funktioniert dies nicht mehr.

Früher konnte man mit http://username:[email protected] den Namen und das Passwort direkt in der URL übergeben. Dies scheint aus Sichheitsgründen aber nicht mehr zu funktionieren.

Man kann also in seinem Programmcode den Namen und dass Passwort bei einer Abfrage übergeben. Das Internet ist voll von Beispielen. Leider funktioniert von den unzähigen Beispielen auf stackoverflow.com keine einzige.

Hat jemand eine Idee wie man das in Swift realisieren könnte?


Code:
let url = NSURL(string: "http://www.weather.com")!
        let task = NSURLSession.sharedSession().dataTaskWithURL(url) { (data, response, error) -> Void in
            if let urlContent = data {
                let webContent = NSString(data: urlContent, encoding: NSUTF8StringEncoding)
                print(webContent)
            }
        }
  task.resume()
 
https://gist.github.com/n8armstrong/5c5c828f1b82b0315e24
Hier z.B. ein Beispiel. Leider bricht XCode an der Stelle base64EncodedCredential ab mit der Fehlermeldung:

Cannot invoke 'base64EncodedStringWithOptions' with an argument list of type 'nil)'


ab

edit: Hier die Lösung
Code:
let base64EncodedCredential = userPasswordData!.base64EncodedStringWithOptions(nil)

ändern in
Code:
base64EncodedStringWithOptions(NSDataBase64EncodingOptions.Encoding64CharacterLineLength)
 
Zuletzt bearbeitet: