为什么在完成以下所有代码之后,我执行po NSKeyedUnarchiver.unarchiveObject(with: (response.request?.httpBody)!)
后得到nil
?并且响应代码是400.响应代码为400的原因,我相信是因为参数。有什么建议吗?
let urlRequest = NSMutableURLRequest(url: url)
let bodyData = parameters.first!.key + "=" + String(describing: parameters.first!.value)
urlRequest.bind(to: command!)
urlRequest.httpBody = bodyData.data(using: .utf8)
urlRequest.httpMethod = "POST"
urlRequest.allHTTPHeaderFields = NetworkManager.defaultHeaders()
return Alamofire.request(urlRequest.copy() as! URLRequest)
编辑:好的,所以我替换了一些行,现在代码看起来像这样,参数不再是零:
let urlRequest = NSMutableURLRequest(url: url)
let dataParameters: Data = NSKeyedArchiver.archivedData(withRootObject: parameters)
urlRequest.bind(to: command!)
urlRequest.httpBody = dataParameters
urlRequest.httpMethod = HTTPMethod.post.rawValue
urlRequest.allHTTPHeaderFields = NetworkManager.defaultHeaders()
return Alamofire.request(urlRequest.copy() as! URLRequest)
但即使这样我也得到400代码。所以在对邮递员进行了一些调查之后,我发现如果我把这个身体放在这个{“xxxxx”:“xxxxxxxxx”}它可以工作,我得到一个好的代码,但是如果我使用一个密钥和值,它就不会。我该如何做到这一点?
答案 0 :(得分:0)
所以我发现为什么我收到了错误的请求,答案非常简单。只需使用json序列化。
我刚刚取代了这个
let jsonData = try? JSONSerialization.data(withJSONObject: parameters)
urlRequest.httpBody = jsonData
用这个
let dataParameters: Data = NSKeyedArchiver.archivedData(withRootObject: parameters)
urlRequest.httpBody = dataParameters
如果有人和我有同样的问题,我会把它留在这里。