无法正常工作-在Swift 3/4中以编程方式在Api中注册用户 [英] Not working - Registering User in Api Programatically in Swift 3/4

查看:56
本文介绍了无法正常工作-在Swift 3/4中以编程方式在Api中注册用户的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在我的API中注册用户。当我在Postman中进行操作时,它会注册用户并返回状态为true,并以用户创建的身份返回消息,但是当我尝试以编程方式快速创建新用户时,它始终显示用户已经存在(给出错误的响应),即使它没有注册。我正在使用Swift 4 Xcode 9。

I'm trying to register a user in my API. When I do it in Postman, it registers the user and returns the status as true and message as User Created, but when I try to create a new user from swift programatically it always shows User already exists (giving false response), even though it is not registered. I'm Using Swift 4 Xcode 9.

几乎相同的代码适用于Sign In Api,但不适用于用户注册。而且,在我通过Api中的邮递员注册该用户后,它对于Login来说可以正常工作。所以我没有发现RegisterUser的问题所在。代码没有显示错误。

The almost same code work works for Sign In Api, but not working for User Registration. Also, after I register that user through postman in Api, it works perfectly fine for Login. So I'm not getting what the problem is with RegisterUser. Code shows no error.

这是我用于注册用户的代码:

Here is my code for registeringUser:

import UIKit
import SwiftyJSON
import Alamofire
import SwiftKeychainWrapper

class RegisterUserViewController: UIViewController {
    @IBOutlet weak var firstNameTextField: UITextField!
    @IBOutlet weak var lastNameTextField: UITextField!
    @IBOutlet weak var emailAddressTextField: UITextField!
    @IBOutlet weak var passwordTextField: UITextField!
    @IBOutlet weak var repeatPasswordTextField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    @IBAction func cancelButtonTapped(_ sender: Any) {
        print("Cancel button tapped")

        self.dismiss(animated: true, completion: nil)
    }


    @IBAction func signupButtonTapped(_ sender: Any) {
       print("Sign up button tapped")


        // Validate required fields are not empty
        if (firstNameTextField.text?.isEmpty)! ||
            (lastNameTextField.text?.isEmpty)! ||
            (emailAddressTextField.text?.isEmpty)! ||
            (passwordTextField.text?.isEmpty)!
        {
            // Display Alert message and return
            displayMessage(userMessage: "All fields are quired to fill in")
            return
        }

        // Validate password
        if ((passwordTextField.text?.elementsEqual(repeatPasswordTextField.text!))! != true)
        {
            // Display alert message and return
            displayMessage(userMessage: "Please make sure that passwords match")
            return
        }



        let userdefault = UserDefaults.standard
        userdefault.set(emailAddressTextField.text, forKey: "email_id")
        //userdefault.set(emailAddressTextField, forKey: "email_id")
         print("email_id",emailAddressTextField.text)

        //print("email_address",userdefault.string(forKey: "email_id"))


        var request = URLRequest(url: URL(string: "http://horn.hostingduty.com/api/v1/app_adduser")!)
        request.httpMethod = "POST"
        print("its working")
        let postString =    "first_name=\(firstNameTextField.text)";
        "last_name=\(lastNameTextField.text)";
        "email_id=\(emailAddressTextField.text)";
        "password=\(passwordTextField.text)"

        request.httpBody = postString.data(using: .utf8)
        let task = URLSession.shared.dataTask(with: request) { data, response, error in
            guard let data = data, error == nil else {                                                 // check for fundamental networking error
                print("error=\(error)")
                return
            }

            if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {           // check for http errors
                print("statusCode should be 200, but is \(httpStatus.statusCode)")
                print("response = \(response)")
            }



            var responseString = String(data: data, encoding: .utf8)
            print("responseString = \(responseString)")

            if(responseString?.contains("true"))!{

                DispatchQueue.main.async
                    {

                        let homePage = self.storyboard?.instantiateViewController(withIdentifier: "HomePageViewController") as! SWRevealViewController
                        let appDelegate = UIApplication.shared.delegate
                        appDelegate?.window??.rootViewController = homePage

                }

          print("status = true")

            }
            else{

                                DispatchQueue.main.async
                                    {

                                        self.showToast(message: "Already exists !! ")
                                    }
                print("Status = false")

            }
        }

         task.resume()


    }
    func displayMessage(userMessage:String) -> Void {
        DispatchQueue.main.async
            {}
                let alertController = UIAlertController(title: "Alert", message: userMessage, preferredStyle: .alert)

                let OKAction = UIAlertAction(title: "OK", style: .default) { (action:UIAlertAction!) in
                    // Code in this block will trigger when OK button tapped.
                    print("Ok button tapped")
                    DispatchQueue.main.async
                        {
                            self.dismiss(animated: true, completion: nil)
                    }
                }
                alertController.addAction(OKAction)
                self.present(alertController, animated: true, completion:nil)
        }

}


推荐答案

 func loginApi() {


    let userName = userNameText?.text ?? ""
    print(userName)
    let password = passwordText?.text ?? ""
    print(password)
    let params = [

        "emailId"      :  userName as Any,
        "password"     :  password as Any,

        ] 


    Alamofire.SessionManager.default.request("your url", method: .post, parameters: params, encoding: URLEncoding(destination: .methodDependent))
        .validate(statusCode: [200, 201])
        .responseJSON {
             [unowned self] (response) in



                switch(response.result) {
                case .success:
                    guard let json = response.result.value as! 
               [String:Any]? else{ return}
                    print("Response \(json)")
                    if let data = json["data"] as! [String:Any]?{
                     let email_id : String = email_id
                                userdefault.set(emailAddressTextField.text, forKey: "email_id")
                                print(email_id)
                                UserDefaults.standard.synchronize()
                          let homePage = self.storyboard?.instantiateViewController(withIdentifier: "HomePageViewController") as! SWRevealViewController
                    let appDelegate = UIApplication.shared.delegate
                    appDelegate?.window??.rootViewController = homePage
                            }

                        }

                    }


                case .failure(let err):
                    self.showNormalAlertWithTitle(NSLocalizedString("Alert!", comment: ""), message:NSLocalizedString("Please enter valid username or password", comment: ""))
                    print("\(err.localizedDescription)")
                    break

                }

            }
    }

这篇关于无法正常工作-在Swift 3/4中以编程方式在Api中注册用户的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆