Как конвертировать CURL-запрос в Swift с помощью Alamofire? - PullRequest
0 голосов
/ 11 ноября 2018

Я использую Alamofire, и у меня есть такая команда curl:

curl "https://abc.mywebsite.com/obp/v3.1.0/my/page/accounts/myaccount1/account" -H 'Authorization: DirectLogin token="eyJhbGciOiJIUzI1NiIsInR5cCI6wkpeVeCJr.eyIiOiIifQ.MV-E150zMCrk6VrWv"' -H 'Content-Type: application/json'

Эта команда отлично работает в командной строке, и я успешно получаю ответ.

Для Swift я нашел очень мало помощи в Интернете, которая не работала для меня, и поэтому оставив здесь вопрос, как я могу сделать этот вызов, используя Swift?

В идеале я хотел бы использовать Alamofire, поскольку именно это я использую для всех своих сетевых вызовов.

У меня есть что-то подобное, но оно не работает, оно выдает ошибку User Unauthorized, что означает, что он подключается к серверу, но не отправляет параметры правильно.

let url = "https://abc.mywebsite.com/obp/v3.1.0/my/page/accounts/myaccount1/account"
let loginToken = "'Authorization' => 'DirectLogin token=\"eyJhbGciOiJIUzI1NiIsInR5cCI6wkpeVeCJr.eyIiOiIifQ.MV-E150zMCrk6VrWv\"', 'Content-Type' => 'application/json'"


@IBAction func callAPIAction(_ sender: Any) {
    Alamofire
        .request(
            self.url,
            parameters: [
                "token" : self.loginToken
            ]
        )
        .responseString {
            response in
            switch response.result {
            case .success(let value):
                print("from .success \(value)")
            case .failure(let error):
                print(error)
            }
    }
}

1 Ответ

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

Похоже, вы хотите установить заголовок Authorization на DirectLogin token="eyJhbGciOiJIUzI1NiIsInR5cCI6wkpeVeCJr.eyIiOiIifQ.MV-E150zMCrk6VrWv".Вы можете сделать это так:

let loginToken = "DirectLogin token=\"eyJhbGciOiJIUzI1NiIsInR5cCI6wkpeVeCJr.eyIiOiIifQ.MV-E150zMCrk6VrWv\""

...

@IBAction func callAPIAction(_ sender: Any) {
    Alamofire
        .request(
            self.url,
            headers: [
                "Authorization": self.loginToken,
                "Content-Type": "application/json"
            ]
        )
        .responseString {
            response in
            switch response.result {
            case .success(let value):
                print("from .success \(value)")
            case .failure(let error):
                print(error)
            }
    } 
}

...
...