我和我的公司正在开发一个 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
我想这会起作用。
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!)"]
然后检查。
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)
查看此以获取更多信息。