Ich benutze Alamofire-Bibliothek für die Verbindung mit einer API in iOs. Ich habe ein Problem in einer der Verbindung, und ich weiß nicht, ob es wegen der Daten in den Körper oder eine andere Sache codiert ist. Um meinen Fehler zu erkennen, versuche ich in der Konsole den Anfragetext zu drucken, um zu prüfen, ob ich die richtige Datenstruktur sende.Drucken Alamofire Anfrage Körper
Mein Code ist folgende:
func updateUser (#user: User, completionHandler: (responseObject: User?, error: AnyObject?) ->()) {
let parameters = [
"_id": "\(user._id!)",
"email": "\(user.email!)",
"media": "\(Mapper().toJSONArray(user.media!))",
"blogs": "\(Mapper().toJSONArray(user.blogs!))"
]
var manager = Alamofire.Manager.sharedInstance
manager.request(.PUT, apiUrl + "/route/to/api", parameters: parameters, encoding: .JSON)
.responseObject{ (req: NSURLRequest, res: NSHTTPURLResponse?, user: User?, data: AnyObject?, error: NSError?) in
if(error != nil) {
NSLog("Error API updateUser: \(error)")
}
else {
completionHandler(responseObject: user as User?, error: data)
}
}
}
User ist ein Mappable Objekt, da ich verwende ObjectMapper kombiniert mit Alamofire. Der Benutzer wird durch den folgenden Code definiert:
class User: Mappable {
var _id: String?
var name: String?
var media: [Media]?
init(_id: String, name: String, media: [Media]){
self._id = _id;
self.name = name;
self.media = media
}
required init=(_ map: Map){
mapping(map)
}
func mapping(map: Map){
_id <- map["_id"]
name <- map["name"]
media <- map["media"]
}
}
Medien ist wie Benutzer definiert, aber mit verschiedenen Variablen.
Außerdem würde Ich mag wissen, zusätzlich von Druckanfrag Körper, wenn ich die Parameter auf Alimofire Anfrage auf eine effizientere Art und Weise (so etwas wie Parsen das Benutzerobjekts und es für die Parameter variable Substitution) umfassen könnte
Irgendeine Idee über meine Probleme?
EDIT:
Anregung von @Travis Folgen, schließlich fand ich die Lösung, die die Anfrage Körper für den Druck. Im Folgenden finden Sie den Code gefunden:
println("request body: \(NSString(data:req.HTTPBody!, encoding:NSUTF8StringEncoding) as String?)")
Über vorbei als Parameter ein Objekt, das ich nicht arbeiten konnte, folgte ich die offizielle Dokumentation, aber ich konnte es tun.
Für die Protokollierung Request/Response ist: https://github.com/konkab/AlamofireNetworkActivityLogger – neoneye