Alamofire POST 代币

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

我和我的公司正在开发一个 iOS 项目,我们在这个问题上陷入了困境。我们正在尝试向 API 发出 POST 请求,但我们得到的只是成功代码,但响应类型为:

成功:{ 详细信息=“未提供身份验证凭据。”; }

这是我们的代码:

@IBAction func accept(_ sender: Any) {
    var comm,cat,dist : String!
    comm = observationstwee.text!
    print(comm)
    let catd = 7
    cat = String(catd)
    print(cat)
    dist = distancetwee.text!
    print(dist)
    let parameters: Parameters = [
        "comment":comm,
        "category":cat,
        "distance":dist,
        "timestamp":time
    ]
    let headers: HTTPHeaders = ["Authorization": "Token \(token!)"]
    print(headers.debugDescription)
    Alamofire.request("https://llegoelbigotes.ubiqme.es/api/new-travel",parameters: parameters, headers: headers).responseJSON {response in switch(response.result) {
        
    case .success(_):
        print(response)
        print("Correct Travel")
        //changeViewController(storyboard_name: "Main", viewcontroller_name: "tabBarController", context: self)
        break
        
    case .failure(_):
        print("FAILURE")
        }
    }
}

我们正在使用 Alamofire 4.5 和 iOS 11.2

ios swift post alamofire
2个回答
1
投票

我想这会起作用。

let url = "https://llegoelbigotes.ubiqme.es/api/new-travel"

Alamofire.request(
        url,
        method: .post,
        parameters: parameters,
        encoding: JSONEncoding.default,
        headers: headers). validate().responseJSON{ response in 
        switch(response.result) {

        case .success(_):
            print(response.response)
            print("Correct Travel")
           //changeViewController(storyboard_name: "Main", viewcontroller_name: "tabBarController", context: self)
           break

        case .failure(_):
        print("FAILURE")
     }
 }

如果没有,请尝试检查 headers 类型的变量 HTTPHeaders

let headers: HTTPHeaders = ["Authorization": "Token \(token!)"]

在这里,您将附加 Token 与您的令牌字符串。假设您的代币是XXXX,那么它就变成了TokenXXXX。尝试像

一样使用它
let headers: HTTPHeaders = ["Authorization": " \(token!)"]

然后检查。


0
投票

1) 您正在发送 GET 请求。我没有在 Alamofire 调用中看到指定的另一种方法,据我所知,默认是 GET。

2)在responseJSON之前链式validate()方法,这样你的请求调用将如下所示:

Alamofire.request("https://llegoelbigotes.ubiqme.es/api/new-travel", method: .post, parameters: parameters, headers: headers).validate().responseJSON { ...

解决此问题的另一个可能方法是使用另一种编码。在呼叫 alamofire 时设置

encoding: URLEncoding(destination: .httpBody)

查看以获取更多信息。

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