Swift - проблема аутентификации для базового http auth [duplicate]

ЭТО ОТВЕТ ТОЛЬКО ДЛЯ ПОЛЬЗОВАТЕЛЕЙ ECLIPSE:

Если вы используете Eclipse, поместите банку в lib /, щелкните правой кнопкой мыши на имени баннера и нажмите «добавить в путь сборки». Eclipse создаст «ссылки библиотек» и поместит банку для вас

. Он разрешил импорт банки сразу в программе для меня

70
задан MrKos 24 June 2014 в 09:03
поделиться

8 ответов

128
ответ дан Nate Cook 26 August 2018 в 23:43
поделиться

swift 4:

let username = "username"
let password = "password"
let loginString = "\(username):\(password)"

guard let loginData = loginString.data(using: String.Encoding.utf8) else {
    return
}
let base64LoginString = loginData.base64EncodedString()

request.httpMethod = "GET"
request.setValue("Basic \(base64LoginString)", forHTTPHeaderField: "Authorization")
0
ответ дан Amr 26 August 2018 в 23:43
поделиться
3
ответ дан ingconti 26 August 2018 в 23:43
поделиться
1
ответ дан Oliver Koehler 26 August 2018 в 23:43
поделиться
1
ответ дан Rudest Buddhist 26 August 2018 в 23:43
поделиться
6
ответ дан Sam Soffes 26 August 2018 в 23:43
поделиться
1
ответ дан siledh 26 August 2018 в 23:43
поделиться

// создать базу данных аутентификации base 64

    let PasswordString = "\(txtUserName.text):\(txtPassword.text)"
    let PasswordData = PasswordString.dataUsingEncoding(NSUTF8StringEncoding)
    let base64EncodedCredential = PasswordData!.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.Encoding64CharacterLineLength)
    //let base64EncodedCredential = PasswordData!.base64EncodedStringWithOptions(nil)

// создать идентификатор аутентификации

    let urlPath: String = "http://...../auth"
    var url: NSURL = NSURL(string: urlPath)

// создать и инициализировать основной запрос аутентификации

    var request: NSMutableURLRequest = NSMutableURLRequest(URL: url)
    request.setValue("Basic \(base64EncodedCredential)", forHTTPHeaderField: "Authorization")
    request.HTTPMethod = "GET"

// Вы можете использовать один из методов ниже:

// 1 URL-запрос с NSURLConnectionDataDelegate

    let queue:NSOperationQueue = NSOperationQueue()
    let urlConnection = NSURLConnection(request: request, delegate: self)
    urlConnection.start()

// 2 Запрос URL с асинхронным Request

    NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {(response, data, error) in
        println(NSString(data: data, encoding: NSUTF8StringEncoding))
    }

// 2 Запрос URL-адреса с AsynchronousRequest с json-выходом

    NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue(), completionHandler:{ (response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in
        var err: NSError
        var jsonResult: NSDictionary = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary
        println("\(jsonResult)")
    })

// 3 Запрос URL-адреса с SynchronousRequest

    var response: AutoreleasingUnsafePointer<NSURLResponse?>=nil
    var dataVal: NSData =  NSURLConnection.sendSynchronousRequest(request, returningResponse: response, error:nil)
    var err: NSError
    var jsonResult: NSDictionary = NSJSONSerialization.JSONObjectWithData(dataVal, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary
    println("\(jsonResult)")

// 4 Запрос URL с NSURLSession

    let config = NSURLSessionConfiguration.defaultSessionConfiguration()
    let authString = "Basic \(base64EncodedCredential)"
    config.HTTPAdditionalHeaders = ["Authorization" : authString]
    let session = NSURLSession(configuration: config)

    session.dataTaskWithURL(url) {
        (let data, let response, let error) in
        if let httpResponse = response as? NSHTTPURLResponse {
            let dataString = NSString(data: data, encoding: NSUTF8StringEncoding)
            println(dataString)
        }
    }.resume()

// вы можете получить фатальную ошибку, если вы изменили request.HTTPMethod = "POST", когда запрос запроса GET сервера

19
ответ дан Subhash 26 August 2018 в 23:43
поделиться
Другие вопросы по тегам:

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