首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift中的基本要求

Swift中的基本要求
EN

Stack Overflow用户
提问于 2020-10-29 17:23:22
回答 1查看 1.4K关注 0票数 1

嘿,我对Swift比较陌生,我已经成功地从一个公共API中获取了数据,但是还有一个需要认证的API。我确实有一个帐户,我已经核实了凭证是否有效,但是我不清楚如何用Basic Auth来编写POST请求

我在Basic Auth的Wiki页面上看到,它说要用用户配置URL &传入如下:https://Aladdin:OpenSesame@www.example.com/index.html,但这本身并不能修复它,所以我不知道还需要做些什么来配置这个请求。任何帮助都将不胜感激!

代码语言:javascript
复制
struct Response: Codable {
    var results: [Result]
}

struct Result: Codable {
    var pool_system_type: String
}

struct WaterTestView: View {    
    @State private var results = [Result]()
    
    var body: some View {
        List(results, id: \.trackId) { result in
            VStack(alignment: .leading) {
                Text(result.pool_system_type)
            }
        }.onAppear(perform: loadData)
    }
    
    func loadData() {
        guard let url = URL(string: "https://myemail@email.com:mypassword@biolabhydra.com/api/v3/water_tests") else {
            print("Invalid URL")
            return
        }

        let request = URLRequest(url: url)
        
        URLSession.shared.dataTask(with: request) { data, response, error in
            if let data = data {
                if let decodedResponse = try? JSONDecoder().decode(Response.self, from: data) {
                    DispatchQueue.main.async {
                        results = decodedResponse.results
                    }
                    return
                }
            }
            print("Fetch failed: \(error?.localizedDescription ?? "Unknown error")")
        }.resume()
    }
}
EN

回答 1

Stack Overflow用户

发布于 2020-10-30 01:31:05

对于basic,您将身份验证数据放在HTTP报头字段中。

代码语言:javascript
复制
extension URLRequest {
    mutating func setBasicAuth(username: String, password: String) {
        let encodedAuthInfo = String(format: "%@:%@", username, password)
            .data(using: String.Encoding.utf8)!
            .base64EncodedString()
        addValue("Basic \(encodedAuthInfo)", forHTTPHeaderField: "Authorization")
    }
}

var request = URLRequest(url: URL(string: "https://www.awesome.com/")!)
request.setBasicAuth(username: "awesomeUser", password: "awesomePass")
request.httpMethod = "POST"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64596202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档