HTTP 请求在 Postman 中工作,但在我的 Swift 应用程序中不起作用

问题描述 投票:0回答:1

我有一个正在运行的 Vapor 服务器,并且我正在尝试使用不记名令牌身份验证。我能够登录并获得令牌作为响应。在 Postman 中,我可以使用令牌值来验证我的路线并接收正确的响应(Resident 数组)。在我的应用程序中,我使用新的令牌值,并将身份验证设置为 Bearer,但收到 401 响应。 Postman 在我的应用程序中缺少的 HTTP 请求中放入了什么?

这是我的应用程序 HTTP 请求函数:

func getResidents() async throws -> [Resident] {
       
        
        let session = URLSession.shared
        var request = URLRequest(url: URL(string: "\(API.url)/residents")!)
        
        request.httpMethod = "GET"
        request.setValue("application/json", forHTTPHeaderField: "Content-Type")
        request.setValue("Bearer \(token?.value)", forHTTPHeaderField: "Authorization")
            
            // Make the request
        let (data, response) = try await session.data(for: request)
            
        print(response)
            // Ensure we had a good response (status 200)
            guard let httpResponse = response as? HTTPURLResponse, httpResponse.statusCode == 200 else {
                throw GetResidentsError.unableToGetResidents
            }
        print(httpResponse.statusCode)
            
        let decoder = JSONDecoder()
        let residents = try decoder.decode([Resident].self, from: data)
        
        print(residents)
        return residents
    }

这是我的邮差获取带有不记名身份验证的请求:

swift swiftui vapor
1个回答
0
投票

Larme的回应让我找到了答案。根据要求打印输出是:

可选([“Content-Type”:“application/json”,“授权”:“承载可选(“2Qo8hWuzbmNu2EImpeXDYQ==”)“])

在将令牌值放入标头之前,我没有解开可选内容。打开包装后我的请求成功了。

谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.