Je suis (essayant de) apprendre la langue pomme du Swift. Je suis au terrain de jeu et en utilisant Xcode 6 Beta. J'essaie de faire un simple message JSON à un serveur Nodejs local. J'avais déjà chooglé à ce sujet et les principaux tutoriels expliquent comment le faire dans un projet, pas dans la cour de jeu, que n'écrivez pas stupide pense comme suit: "Google it" ou "c'est évident" ou "regarder ce lien" ou "regarder ce lien" ou Code testé et non fonctionnel
C'est ce que j'essaie: p> J'avais essayé: p> var dataString = "some data"
var request = NSMutableURLRequest(URL: NSURL(string: "http://posttestserver.com/post.php"))
request.HTTPMethod = "POST"
let data = (dataString as NSString).dataUsingEncoding(NSUTF8StringEncoding)
var requestBodyData: NSData = data
request.HTTPBody = requestBodyData
var connection = NSURLConnection(request: request, delegate: nil, startImmediately: false)
println("sending request...")
connection.start()
3 Réponses :
On dirait que vous avez toutes les bonnes pièces, tout simplement pas dans le bon ordre:
Nate, j'ai essayé votre code et il est émis: "2014-07-05 12: 05: 24.125 PlaygroundStum_sim [1023: 194623] *** CreatestOsTasTasTasTasTasTasTasStaskManagerForPath: Domaine d'erreur: NSCOCOAERRORDOMAIN Code = 4099" L'opération n'a pas pu être complétée . (Erreur de cacao 4099.) "(La connexion au service nommé com.apple.nsurlstorage-cache a été invalidée.) Userinfo = 0x10bb2fb70 {nsdebugdescription = La connexion au service nommé com.apple.nsurlstorage-cache a été invalidée.}; {NsDebugDescription = "La connexion au service nommé com.apple.nsurlstorage-cache a été invalidée.";} Réponse HTTP: 200 "
@Codewarrior, j'ai le même problème! Avez-vous pu le résoudre?
La réponse de Nate était excellente mais je devais changer la demande.setvalue pour qu'il fonctionne sur mon serveur
// create the request & response
var request = NSMutableURLRequest(URL: NSURL(string: "http://requestb.in/1ema2pl1"), cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData, timeoutInterval: 5)
var response: NSURLResponse?
var error: NSError?
// create some JSON data and configure the request
let jsonString = "json=[{\"str\":\"Hello\",\"num\":1},{\"str\":\"Goodbye\",\"num\":99}]"
request.HTTPBody = jsonString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)
request.HTTPMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
// send the request
NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: &error)
// look at the response
if let httpResponse = response as? NSHTTPURLResponse {
println("HTTP response: \(httpResponse.statusCode)")
} else {
println("No HTTP response")
}
À cette ligne, je reçois la demande de déclaration exceptée.httpbody = jsonstring.dataaTataUserCoding (nsutf8stringencoding, allemandeLossyconversion: true) mais il est déjà déclaré.
Voici une petite approche différente à l'aide de la demande asynchrone. Vous pouvez utiliser une approche synchrone de cette façon aussi, mais comme tout le monde au-dessus de la demande synchrone utilisée, j'ai envisagé de montrer une demande asynchrone. Une autre chose est qu'il semble plus propre et plus facile de cette façon.
let JSONObject: [String : AnyObject] = [
"name" : name,
"address" : address,
"phone": phoneNumber
]
if NSJSONSerialization.isValidJSONObject(JSONObject) {
var request: NSMutableURLRequest = NSMutableURLRequest()
let url = "http://tendinsights.com/user"
var err: NSError?
request.URL = NSURL(string: url)
request.HTTPMethod = "POST"
request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.HTTPBody = NSJSONSerialization.dataWithJSONObject(JSONObject, options: NSJSONWritingOptions(rawValue:0), error: &err)
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue()) {(response, data, error) -> Void in
if error != nil {
println("error")
} else {
println(response)
}
}
}
Avez-vous une idée sur la manière d'inclure une matrice JSON comme l'un des objets HTE JSON de la matrice? Je construis une chaîne JSON et l'ajoutant comme valeur d'un de mes objets JSON, mais cela échoue (les caractères de scapre sont analysés). Mon serveur est de la journalisation \ "[\" Key \ ": \" valeur \ "}] \"