Swift: заголовок авторизации запроса не установлен - PullRequest
0 голосов
/ 03 ноября 2018

У меня есть конечная точка запроса для sylius API , когда я задаю заголовок типа содержимого с помощью application/json и заголовок Authorization с точным значением Bearer SampleToken через почтальона он хорошо отвечает предполагаемым ответом, но когда я пытаюсь установить заголовок авторизации запроса через URLRequest, он дает мне ответ

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

когда я отслеживаю запрос через charles, я заметил, что заголовок Authorization удален. Я пробовал много разных способов установить заголовок авторизации, но безуспешно.

func getTotalProducts(page:String){
    let urlPath="https://demo.sylius.com/api/v2/products"
    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()
}

Оригинальный запрос почтальона:

enter image description here

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

Ваш токен авторизации должен быть строкой в ​​кодировке base64 user:password

request.setValue("Bearer base64EncodedString", forHTTPHeaderField: "Authorization")

0 голосов
/ 03 ноября 2018

Попробуйте изменить

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

до

    request.allHTTPHeaderFields = [
       "Authorization": "Bearer SampleToken",
       "Content-Type": "application/json"
    ]
...