我的公司和我正在开发一个iOS项目,我们在这个问题上陷入困境。我们正在尝试向我们的API发出POST请求,但我们得到的只是一个成功代码,但有一个类型的响应:
成功:{ detail =“未提供身份验证凭据。”; }
这是我们的代码:
@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
答案 0 :(得分:0)
1)您正在发送GET请求。我没有在Alamofire中看到调用指定的另一种方法,而AFAIK,默认是GET。
2)在responseJSON之前使用链验证()方法,因此您的请求调用将如下所示:
Alamofire.request("https://llegoelbigotes.ubiqme.es/api/new-travel", method: .post, parameters: parameters, headers: headers).validate().responseJSON { ...
此问题的另一个可能的解决方法是使用其他编码。在致电alamofire设置encoding: URLEncoding(destination: .httpBody)
请查看this以获取更多信息。
答案 1 :(得分:0)
我想这会奏效。
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")
}
}
如果没有,请尝试检查 HTTPHeaders
类型的标题变量let headers: HTTPHeaders = ["Authorization": "Token \(token!)"]
在这里,您将使用您的令牌字符串附加令牌。说你的令牌是 XXXX 然后它变成 TokenXXXX 。尝试使用它
let headers: HTTPHeaders = ["Authorization": " \(token!)"]
然后检查。