You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI接入带Basic Auth的外部API代码修改求助

在SwiftUI中为API请求添加基础认证(Basic Auth)

直接给你修改好的代码,核心是通过URLRequest添加Basic Auth认证头:

func loadData() async {
    guard let url = URL(string: "https://urlapi/user/basicauth") else {
        print("bad URL")
        return
    }
    
    // 替换成你的API真实用户名和密码
    let username = "your_username"
    let password = "your_password"
    
    // 生成Basic Auth凭证字符串
    guard let loginData = "\(username):\(password)".data(using: .utf8),
          let base64LoginString = loginData.base64EncodedString().addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {
        print("Failed to encode credentials")
        return
    }
    
    var request = URLRequest(url: url)
    request.setValue("Basic \(base64LoginString)", forHTTPHeaderField: "Authorization")
    
    do {
        let (data, _) = try await URLSession.shared.data(for: request)
        users = try JSONDecoder().decode([JSONuser].self, from: data)
    } catch {
        print(error)
    }
}

关键说明:

  1. 凭证编码逻辑:把用户名和密码按用户名:密码格式拼接,转成UTF-8编码的Data后,再转成Base64字符串,最后做百分号编码避免特殊字符破坏格式。
  2. 请求头设置:给URLRequest添加Authorization头,格式固定为Basic [Base64编码后的凭证]。
  3. 请求发送:用URLSession.shared.data(for: request)替代原来的data(from: url),发送带认证信息的请求。

注意事项:

  • 不要硬编码用户名和密码,建议从Keychain等安全存储中读取。
  • 确认目标API确实支持Basic Auth认证方式。
  • 编码失败时要做好错误捕获,避免崩溃。

内容的提问来源于stack exchange,提问作者JuanE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 20:39:53