恐怕我无法共享API网址。但是我已经检查过 Postman ,它可以工作。这是一个 POST 请求,以下是响应:
{
"user_key": "b0aebdedb15e2beaaf479ca3c4f8227e8e970681"
}
邮递员屏幕截图:
在代码中,这是我使用Alamofire发出的请求:
Alamofire.request("some url", method: .post, parameters: params, encoding: URLEncoding.httpBody, headers: ["Content-Type":"application/json"])
.responseObject { (response: DataResponse<User>) in
let userResponse = response.result.value
print("")
}
但是userResponse变为零。这是 User 对象:
import ObjectMapper
class User: Mappable {
var authToken: String?
required init?(map: Map) {
}
func mapping(map: Map) {
self.authToken <- map["user_key"]
}
}
我在这里使用ObjectMapper。
假设它不是JSON
对象,我试图将其作为String
处理:
Alamofire.request("some url", method: .post, parameters: params, encoding: URLEncoding.httpBody, headers: ["Content-Type":"application/json"])
.responseString { (response: DataResponse<String>) in
let dataUser = response.data as! Any
let dataUser1 = response.data as! AnyObject
let error = response.error
let code = response.response?.statusCode
print(response.value)
print(response.result.value)
}
仍然没有。我无法检索该值。但是状态码显示为400(错误请求)。
到底是什么? JSON
个对象还是String
?我该如何解决?
答案 0 :(得分:0)
只需尝试更换
此URLEncoding.httpBody
至JSONEncoding.default
JSONEncoding.default
使用JSONSerialization
创建参数对象的JSON表示,该对象设置为请求的主体。编码后的请求的Content-Type
HTTP标头字段设置为application/json
。