首页 > 解决方案 > 无法随我的请求发送授权标头

问题描述

当我使用 application/json 设置内容类型标头和通过邮递员使用确切值 Bearer SampleToken 设置授权标头时,我有一个 sylius API的请求端点,它可以很好地响应预期的响应,但是当我尝试通过设置请求授权标头时URLRequest 它给了我一个响应

{
"error" = "access_denied";
"error_description" = "OAuth2 authentication required";

}

当我通过 charles 监控请求时,我注意到 Authorization 标头已被剥离。我尝试了许多不同的方法来设置授权标头,但没有运气。

func getTotalProducts(page:String){
let urlPath="https://demo.sylius.com/api/v2/taxons"
var request = URLRequest(url:  NSURL(string: urlPath)! as URL)
request.httpMethod = "GET"

request.setValue("Bearer SampleToken", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")

Alamofire.request(request)
    .responseJSON { response in
        switch(response.result){
        case .success(let value):
            print(value)
            break
        case .failure(let error):
            print("something went wrong \(error.localizedDescription)")
        }
    }.session.finishTasksAndInvalidate()

}

原始邮递员请求:

标签: swifthttp-headersauthorizationalamofire

解决方案


既然您使用的是 Alamofire,为什么不简化一些事情呢?

let url = "https://demo.sylius.com/api/v2/taxons"

    let headers: HTTPHeaders = [
        "Authorization": "Bearer SampleToken",
        "Accept": "application/json",
        "Content-Type": "application/json"
    ]

    Alamofire.request(url, method: .get, encoding: JSONEncoding.default, headers: headers)
        .responseJSON { response in
            switch(response.result){
            case .success(let value):
                print(value)
                break
            case .failure(let error):
                print("something went wrong \(error.localizedDescription)")
            }
        }.session.finishTasksAndInvalidate()

推荐阅读