我恐怕无法分享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
?我该如何解决 ?
试着替换
这URLEncoding.httpBody
到JSONEncoding.default
JSONEncoding.default
使用JSONSerialization
创建参数对象的JSON表示,该表示设置为请求的主体。编码请求的Content-Type
HTTP头字段设置为application/json
。