example ios swift macos swift2 nsurlsession

ios - example - Solicitud JIFT POST de Swift 2



swift url session example (1)

Lo que dijo @mrkbxt. No se trata de cómo difiere la sintaxis, sino de los diferentes tipos de datos que envía con su solicitud. El texto codificado en cadena UTF8 es el valor predeterminado para el tipo de contenido NSMutableURLRequest , por lo que su primera solicitud funciona. Para usar un JSON en el cuerpo, debe cambiar el tipo de contenido para usar JSON.

Agregue lo siguiente a su objeto de solicitud para que acepte JSON:

request.setValue("application/json", forHTTPHeaderField: "Content-Type")

Tengo el siguiente código rápido que envía una solicitud POST éxito.

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)

En lugar de usar un parámetro de consulta como la sintaxis, me gustaría utilizar un diccionario, pero cuando hago lo siguiente:

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)

(como lo que he visto), parece enviar la solicitud como si el cuerpo estuviera vacío.

Mi pregunta principal es: ¿cómo difieren estas sintaxis y cómo difieren las solicitudes resultantes?

NOTA : Viniendo de JS, estoy probando el punto final en un entorno de JavaScript (consola de jquery.com) como el siguiente, y está funcionando con éxito:

$.ajax({ url: url, method: ''POST'', data: { foo: ''bar'', baz: ''lee'' } });