2017-10-05 122 views
0

爲什麼以下所有代碼後,我做了po NSKeyedUnarchiver.unarchiveObject(with: (response.request?.httpBody)!)我得到nil?響應代碼是400.響應代碼的原因是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

所以我找到了爲什麼我得到了不好的要求,答案很簡單。只需要使用json序列化。

我剛剛更換這個

let jsonData = try? JSONSerialization.data(withJSONObject: parameters) 
urlRequest.httpBody = jsonData 

與此

let dataParameters: Data = NSKeyedArchiver.archivedData(withRootObject: parameters) 
urlRequest.httpBody = dataParameters 

我只是萬一有人離開這個在這裏有同樣的問題我。