Enviando uma requisição HTTP com autenticação básica

Swift:
Enviando uma requisição HTTP com autenticação básica

Como Fazer:

import Foundation

let username = "usuario"
let password = "senha"
let loginString = "\(username):\(password)"
guard let loginData = loginString.data(using: .utf8) else { return }
let base64LoginString = loginData.base64EncodedString()

var request = URLRequest(url: URL(string: "https://exemplo.com/api/dados")!)
request.httpMethod = "GET"
request.setValue("Basic \(base64LoginString)", forHTTPHeaderField: "Authorization")

URLSession.shared.dataTask(with: request) { data, response, error in
    guard let data = data, error == nil else {
        print(error?.localizedDescription ?? "Resposta desconhecida")
        return
    }

    if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {
        print("Status HTTP: \(httpStatus.statusCode)")
        return
    }

    // Trabalhando com os dados recebidos
    if let resultado = String(data: data, encoding: .utf8) {
        print(resultado)
    }
}.resume()

Saída de exemplo:

{
  "dados": "Informações protegidas que você requisitou."
}

Aprofundamento

Autenticação básica HTTP é um método antigo para enviar credenciais. Ela embala o usuário e senha em Base64, mas não é cifrada, então é vulnerável se não usada com HTTPS. Alternativas seguras incluem tokens de acesso e OAuth. Na implementação, garanta que a requisição tenha o cabeçalho correto e use HTTPS para evitar exposição das credenciais. Em Swift, URLRequest lida com o cabeçalho enquanto URLSession administra o envio.

Veja Também