J'essaye de faire une demande de publication HTTP avec un corps JSON:
Comment pouvoir ajouter un NSdictionnary au corps de la requête HTTP.
Voici mon code, il ne semble pas fonctionner correctement.
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")
Réfrequest.addValue("application/json", forHTTPHeaderField: "Content-Type")
. Sinon, il fait le type pour les formulaires. La configuration très courante d'ExpressJS + bodyParser n'obtiendra que parfois des résultats incorrects , en fonction du contenu . Cela engendre donc des échecs silencieux.HTTP Post dans Swift capturant les erreurs
la source
Swift 4 et 5
HTTP POST request
utilisationURLSession API
dans Swift 4Utilisation d'Alamofire:
la source
Le code Swift 5 Playground suivant montre un moyen possible de résoudre votre problème en utilisant
JSONSerialization
etURLSession
:la source
la source
Réponse parfaite de nRewik mise à jour en 2019:
Faites le dictionnaire:
Assemblez-le comme ceci:
Créez la demande exactement comme ceci, notez qu'il s'agit d'un "post"
Ensuite, envoyez, en recherchant une erreur de réseau (donc, pas de bande passante, etc.) ou une réponse d'erreur du serveur:
Heureusement, c'est maintenant aussi simple.
la source
vous pouvez faire quelque chose comme ceci:
la source
SWIFT 5 personnes ici:
la source
la source
Swift4 - Solution Apple "POST" et "Codable"
Téléchargement de données sur un site Web à l'aide de request.httpmethod = "Post" et Codable Stucts :
@see: Listing 2 Configurer une requête URL
la source
la source
la source
la source
une combinaison de plusieurs réponses trouvées dans ma tentative de ne pas utiliser de frameworks tiers comme Alamofire.
la source
la source