2017-10-05 3 views
0

Warum nach all dem untenstehenden Code, nachdem ich eine po NSKeyedUnarchiver.unarchiveObject(with: (response.request?.httpBody)!) mache, bekomme ich nil? Und der Antwortcode ist 400. Und der Grund, warum der Antwortcode 400 ist, glaube ich, ist wegen der Parameter. Irgendwelche Vorschläge, warum das passiert?Schlechte Anfrage Statuscode 400 nach Anfrage

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) 

EDIT: Ok, also ersetzte ich ein paar Zeilen und jetzt der Code wie folgt aussieht und die Parameter sind nicht mehr gleich Null:

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) 

Aber auch wie diese bekomme ich einen 400-Code. Nachdem ich ein wenig mit dem Postboten geforscht habe, fand ich, dass wenn ich den Körper so einfüge {"xxxxx": "xxxxxxxxx"} es funktioniert und ich einen guten Code bekomme, aber wenn ich einen Schlüssel und Wert verwende, dann nicht. Wie mache ich das?

Antwort

0

So fand ich, warum ich die schlechte Anfrage bekam und die Antwort war wirklich einfach. Musste nur json Serialisierung verwenden.

Und ich gerade ersetzt dieses

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

mit diesem

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

Ich werde einfach das jemand hier im Fall verlassen hat das gleiche Problem wie ich.