【问题标题】:How to convert CURL request to Swift using Alamofire?如何使用 Alamofire 将 CURL 请求转换为 Swift?
【发布时间】:2019-04-14 09:58:45
【问题描述】:

我正在使用 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,因为这是我用于所有网络调用的工具。

我有这样的东西,但它不起作用,它给出了用户未经授权的错误,这意味着它正在连接到服务器但没有正确发送参数。

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)
            }
    }
}

【问题讨论】:

    标签: swift curl alamofire


    【解决方案1】:

    您似乎想将标头 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)
                }
        } 
    }
    
    ...
    

    【讨论】:

    • 感谢您的快速响应,是的,这就是我试图做的,但不正确。现在它工作正常。
    猜你喜欢
    • 2017-06-10
    • 1970-01-01
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    • 2019-06-28
    • 2019-09-21
    相关资源
    最近更新 更多