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) } }
关键说明:
- 凭证编码逻辑:把用户名和密码按
用户名:密码格式拼接,转成UTF-8编码的Data后,再转成Base64字符串,最后做百分号编码避免特殊字符破坏格式。 - 请求头设置:给
URLRequest添加Authorization头,格式固定为Basic [Base64编码后的凭证]。 - 请求发送:用
URLSession.shared.data(for: request)替代原来的data(from: url),发送带认证信息的请求。
注意事项:
- 不要硬编码用户名和密码,建议从Keychain等安全存储中读取。
- 确认目标API确实支持Basic Auth认证方式。
- 编码失败时要做好错误捕获,避免崩溃。
内容的提问来源于stack exchange,提问作者JuanE
相关产品推荐
相关产品推荐

