Ich versuche, eine HTTP-Post-Anfrage mit einem JSON-Body zu stellen:
So fügen Sie dem HTTP-Anforderungshauptteil ein NS-Wörterbuch hinzu.
Hier ist mein Code, er scheint nicht richtig zu funktionieren.
var entry1 = Response(IdQuestion: 6510,IdProposition: 10,Time: 30)
var entry2 = Response(IdQuestion: 8284,IdProposition: 10,Time: 30)
Responses.append(entry1)
Responses.append(entry2)
let list = Responses.map { $0.asDictionary }
let json = ["List":list,"IdSurvey":"102","IdUser":"iOSclient","UserInformation":"iOSClient"]
let data : NSData = NSKeyedArchiver.archivedDataWithRootObject(json)
NSJSONSerialization.isValidJSONObject(json)
let myURL = NSURL(string: "http://www.myserver.com")!
let request = NSMutableURLRequest(URL: myURL)
request.HTTPMethod = "POST"
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.setValue("application/json", forHTTPHeaderField: "Accept")
request.HTTPBody = data
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
println(response)
// Your completion handler code here
}
task.resume()
request.setValue("\(jsonData.length)", forHTTPHeaderField: "Content-Length")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
Refrequest.addValue("application/json", forHTTPHeaderField: "Content-Type")
. Andernfalls wird der Typ für Formulare verwendet. Das sehr häufige ExpressJS + bodyParser-Setup liefert je nach Inhalt nur manchmal falsche Ergebnisse . Dies führt also zu stillen Fehlern.HTTP-Post in Swift, der die Fehler erfasst
quelle
Swift 4 und 5
HTTP POST request
mitURLSession API
in Swift 4Verwenden von Alamofire:
quelle
Der folgende Swift 5 Playground-Code zeigt eine Möglichkeit, Ihr Problem mit
JSONSerialization
und zu lösenURLSession
:quelle
quelle
Perfekte nRewik-Antwort aktualisiert auf 2019:
Machen Sie das Wörterbuch:
Bauen Sie es so zusammen:
Erstellen Sie die Anfrage genau so, beachten Sie, dass es sich um einen "Beitrag" handelt.
Senden Sie dann und überprüfen Sie entweder einen Netzwerkfehler (also keine Bandbreite usw.) oder eine Fehlerantwort vom Server:
Zum Glück ist es jetzt so einfach.
quelle
Sie können so etwas tun:
quelle
SWIFT 5 Leute hier:
quelle
quelle
Swift4 - Apple-Lösung "POST" und "Codable"
Hochladen von Daten auf eine Website mit request.httpmethod = "Post" und codierbaren Methoden :
@see: Listing 2 Konfigurieren einer URL-Anfrage
quelle
quelle
quelle
quelle
Eine Kombination aus mehreren Antworten, die ich bei meinem Versuch gefunden habe, keine Frameworks von Drittanbietern wie Alamofire zu verwenden.
quelle
quelle