gpt4 book ai didi

ios - 不工作 - 在 Swift 3/4 中以编程方式在 Api 中注册用户

转载 作者:搜寻专家 更新时间:2023-10-31 23:07:35 24 4
gpt4 key购买 nike

我正在尝试在我的 API 中注册用户。当我在 Postman 中执行此操作时,它会注册用户并将状态返回为真,并将消息返回为用户已创建,但是当我尝试以编程方式从 swift 创建新用户时,它总是显示用户已经存在(给出错误响应),即使它未注册。我正在使用 Swift 4 Xcode 9。

几乎相同的代码适用于 Sign In Api,但不适用于用户注册。此外,在我通过 Api 中的 postman 注册该用户后,它对于登录来说工作得很好。所以我不明白 RegisterUser 有什么问题。代码显示没有错误。

这是我注册用户的代码:

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

}

}
}

关于ios - 不工作 - 在 Swift 3/4 中以编程方式在 Api 中注册用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49124560/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com