Dans mon application, j'essaie de faire une demande de publication http avec des données json. Le json suivant doit être transféré vers l'api
{
"Password":"123456",
"Email":"[email protected]"
}
Voici mon code pour cette tâche
let dict = ["Email": "[email protected]", "Password":"123456"] as [String: Any]
if let jsonData = try? JSONSerialization.data(withJSONObject: dict, options: []) {
let url = NSURL(string: "http://xxxxxxxxx.net/api/Login")!
let request = NSMutableURLRequest(url: url as URL)
request.httpMethod = "POST"
request.httpBody = jsonData
let task = URLSession.shared.dataTask(with: request as URLRequest){ data,response,error in
if error != nil{
print(error?.localizedDescription)
return
}
do {
let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSDictionary
if let parseJSON = json {
let resultValue:String = parseJSON["success"] as! String;
print("result: \(resultValue)")
print(parseJSON)
}
} catch let error as NSError {
print(error)
}
}
task.resume()
}
Je reçois l'erreur suivante
Error Domain=NSCocoaErrorDomain Code=3840 "No value." UserInfo={NSDebugDescription=No value.}
Les données de réponse sont vides. Qu'est-ce que je fais mal ou j'ai oublié quelque chose dans mon code?
Essayez deux choses:
Premier :
jsonData = try? JSONSerialization.data(withJSONObject: dict, options: .prettyPrinted)
puis ajoutez des journaux si vos données sont converties en JSON. Convertissez vos données en chaîne et imprimez la valeur.
Ajoutez également
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
avant httpBody
. Parfois, nous devons dire au serveur dans notre demande que nous publions des données JSON.
J'espère que cela vous aidera!!
Codage heureux!