Ich habe den folgenden Swift-Code, der eine POST
Anfrage erfolgreich übermittelt.Swift 2 JSON POST-Anfrage [Wörterbuch und String für HTTPBody von NSMutableURLRequest]
let request = NSMutableURLRequest(URL: NSURL(string: url)!)
let session = NSURLSession.sharedSession()
request.HTTPMethod = "POST"
request.HTTPBody = "foo=bar&baz=lee".dataUsingEncoding(NSUTF8StringEncoding)
let task = session.dataTaskWithRequest(request, completionHandler: completionHandler)
Stattdessen Abfrageparameter wie Syntax verwenden, würde Ich mag ein Wörterbuch verwenden, aber wenn ich folgendes tun:
let request = NSMutableURLRequest(URL: NSURL(string: url)!)
let session = NSURLSession.sharedSession()
request.HTTPMethod = "POST"
request.HTTPBody = try! NSJSONSerialization.dataWithJSONObject(["foo":"bar", "lee":"baz"], options: [])
let task = session.dataTaskWithRequest(request, completionHandler: completionHandler)
(wie das, was ich um gesehen habe), wie es scheint um die Anfrage zu stellen, als wäre der Körper leer.
Meine Hauptfrage ist: Wie unterscheiden sich diese Syntaxen, und wie unterscheiden sich die resultierenden Anforderungen?
HINWEIS: Von JS, ich bin in einer JavaScript-Umgebung um den Endpunkt zu testen (jquery.com Konsole), wie die folgenden, und es funktioniert erfolgreich:
$.ajax({
url: url,
method: 'POST',
data: {
foo: 'bar',
baz: 'lee'
}
});
x-www-form-urlencoded vs application/json. Sie haben das Content-Type-Header-Feld nicht auf application/json gesetzt. – mrkbxt
Omfg, ich habe tatsächlich drei Stunden damit verbracht, dieses s ** T out herauszufinden ... eine Methode funktionierte nicht und es war, weil ich das auch verwarf .. -_- – murphguy