Je veux afficher le msg sur {"Statut": 500, "MSG": "\" Les informations sont invalides \ ""} p>
BlockQuote> J'utilise SWIFT4 dans XCode10, voici mon code: P> uitextview code> à l'aide du statut, mais il affiche "SUCCESS: 200":
import UIKit
import Alamofire
import SwiftyJSON
class VerifyAccount: UIViewController {
let verify_url = "http://192.168.43.222:3000/mobile/account_verification"
@IBOutlet weak var msgHandler: UITextView!
func postData(url: String , parameters: [String : String]) {
Alamofire.request(url, method: .post, parameters: parameters).responseJSON {
response in
if response.result.isSuccess {
let postJSON : JSON = JSON(response.result.value!)
print(postJSON)
if let status = response.response?.statusCode {
switch(status) {
case 200:
self.msgHandler.text = ("Success: \(status)")
case 500:
self.msgHandler.text = ("Invalid: \(status)")
default:
}
}
} else {
print("Error: \(String(describing: response.result.error))")
}
}
}
@IBAction func verifyBtn(_ sender: Any) {
let compare : [String : String] = ["id" : id , "fname" : fname , "lname" : lname]
postData(url: verify_url , parameters : compare)
}
}
4 Réponses :
Vous pouvez obtenir une valeur code>,
int code>, etc ...) de votre
json Objet comme:
let status = postJSON["status"].int ?? 0
let message = postJSON["msg"].string ?? "No Message"
Vous devez changer votre façon de gérer votre réponse. J'ai mis à jour votre code, cela devrait fonctionner.
import UIKit import Alamofire import SwiftyJSON class VerifyAccount: UIViewController { let verify_url = "http://192.168.43.222:3000/mobile/account_verification" @IBOutlet weak var msgHandler: UITextView! func postData(url: String , parameters: [String : String]) { Alamofire.request(url, method: .post, parameters: parameters).responseJSON { response in switch response.result { case .success: print("server response: \(response.value!)") do { if var json = try JSONSerialization.jsonObject(with: response.data!, options: []) as? [String:Any] { // Get value by key var message = ""; if let msg = json["msg"] as? String { message = msg; // your message is here, you can do anything with it, whatever you want. } var status = 0; if let st = json["status"] as? Int { status = st; } } } catch let error as NSError { } break case .failure(let error): self.delegate.APIOnError(requestCode: requestCode); print("server error: \(error.localizedDescription)") } } }
Analysez vos données de réponse telles que
guard data _ = response.result.value as? [String: Any] else { print("Error: \(String(describing: response.result.error))") return } let message = data["msg"] as? String ?? "Unable to parse message" if let statusCode = data["status"] as? Int { switch statusCode { case 200: self.msgHandler.text = ("Success: \(message)") case 500: self.msgHandler.text = ("Invalid: \(message)") default:self.msgHandler.text = ("Invalid status code") } }
Vous utilisiez de mauvaises données pour analyser. Vous pouvez essayer ceci:
Essayez d'utiliser
postjson ["msg"]. chaîne code>
Apparemment, le code d'état code> de la réponse code> code> et le statut
code> dans le JSON est différent.