Звучит великолепно :)

я есть сценарий, как:

1) Я хочу создать запрос POST Http и для этого у меня есть данные, пожалуйста, смотрите это изображение:

2) Как вы можете видеть на изображении выше, мне нужно создать сообщение с указанным телом, а также я получаю ответ с именем: token. Как создать почтовый запрос и получить этот токен?

3) Этот ответ токена позволит мне войти в myapp.

Я новичок в этом сценарии. Я попробовал некоторый код самостоятельно, но все еще путаюсь в том, как объединить код моего делегата приложения с этим кодом запроса POST.

Код

 @IBAction func signinaction(_ sender: Any) {

    self.username.resignFirstResponder()
    self.password.resignFirstResponder()

    if (self.username.text == "" || self.password.text == "") {
        let alertView = UIAlertController(title: "Login failed",
                                          message: "Wrong username or password." as String, preferredStyle:.alert)
        let okAction = UIAlertAction(title: "Try Again!", style: .default, handler: nil)
        alertView.addAction(okAction)
        self.present(alertView, animated: true, completion: nil)
        return
    }

    // Check if the user entered an email
    if let actualUsername = self.username.text {

        // Check if the user entered a password
        if let actualPassword = self.password.text {

            // Build the body message to request the token to the web app
            self.bodyStr = "username=8870417698&password=1234&grant_type=password" + actualUsername + "&password=" + actualPassword

            // Setup the request
            let myURL = NSURL(string: "http://ezschoolportalapi.azurewebsites.net/token")!
            let request = NSMutableURLRequest(url: myURL as URL)
            request.httpMethod = "POST"
            request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
            request.setValue("application/json", forHTTPHeaderField: "Accept")
            request.httpBody = bodyStr.data(using: String.Encoding.utf8)!

            let task = URLSession.shared.dataTask(with: request as URLRequest) {
                (data, response, error) -> Void in
                if  data?.count != 0
 {

                    do {

                                                   let tokenDictionary:NSDictionary = try JSONSerialization.jsonObject(with: data!, options:.allowFragments) as! NSDictionary
                        print(tokenDictionary)
                        // Get the token
                        let token:String = tokenDictionary["access_token"] as! String

                        // Keep record of the token

                        let userdefaults = UserDefaults()

                        let saveToken = userdefaults.set(token, forKey: "access_token")
                        userdefaults.synchronize()


                        // Dismiss login view and go to the home view controller
                        DispatchQueue.main.async {
                            self.dismiss(animated: true, completion: nil)
                        }


                    }
                    catch {
                        // Wrong credentials
                        // Reset the text fields
                        self.username.text = ""
                        self.password.text = ""

                        // Setup the alert
                        let alertView = UIAlertController(title: "Login failed",
                                                          message: "Wrong username or password." as String, preferredStyle:.alert)
                        let okAction = UIAlertAction(title: "Try Again!", style:.default, handler: nil)
                        alertView.addAction(okAction)
                        self.present(alertView, animated: true, completion: nil)
                        return
                    }
                }
            }
            task.resume()
        }
    }
}

Вопрос в том, как объединить этот код с моим кодом выше:

let appDelegate = UIApplication.shared.delegate as! AppDelegate  appDelegate.gotoMainvc()

если я использую непосредственно этот код, то в любом случае я могу переключиться на домашний экран, и не имеет значения, использую ли я этот код запроса POST или нет. Пожалуйста помоги.

Ответы на вопрос(1)

Ваш ответ на вопрос