swift - 如何修复发布请求中的错误请求(代码 400)错误?
问题描述
我Agreement Module
在我的应用程序中添加一个,当他/她同意时,用户将在其中点击复选框。当用户点击复选框时,它将返回一个true
值并启用proceed
按钮。点击proceed
按钮后,它将激活用户的帐户。问题是,它返回 a status code 400
并且没有激活用户的帐户。我无法弄清楚我的代码的哪一部分有错误,或者错误来自API
侧面。
我尝试PostMan
使用我在APIService.swift
它返回的文件中使用的相同参数检查它status code 200
并激活用户的帐户。
APIService.swift
func createUser(userRole: UserRole, credential: String, email: String, secureText: String, termsConditions: Bool, completion: @escaping validateTaskCompletion) {
guard let createUserURL = URL(string: CREATE_USER_URL) else {
completion(nil, .InvalidURL)
return
}
let firstParameterTitle = "firstCredential"
let secondParameterTitle = "userType"
let thirdParameterTitle = "email"
let fourthParameterTitle = "password"
let fifthParameterTitle = "hasAgreedToTermsConditions"
let requestBody: Parameters = [
firstParameterTitle: credential,
secondParameterTitle: userRole.rawValue,
thirdParameterTitle: email,
fourthParameterTitle: secureText,
fifthParameterTitle: termsConditions
]
Alamofire.request(createUserURL, method: .post, parameters: requestBody).responseJSON(completionHandler: { (response) in
guard reachability(responseResult: response.result) else {
completion(nil, .NoNetwork)
return
}
guard let statusCode = response.response?.statusCode else {
completion(nil, .NoStatusCode)
return
}
switch(statusCode) {
case 200:
completion(true, nil)
case 400:
completion(nil, .BadRequest)
case 404:
completion(nil, .InvalidCredentials)
case 409:
completion(nil, .AlreadyActivated)
default:
completion(nil, .UncapturedStatusCode)
print("**createUser** Uncaptured Status Code: \(statusCode)")
}
})
条款和条件VC.swift
var userRole: UserRole!
var firstCredential: String!
var emailString: String!
var confirmPasswordString: String!
var agreedtoTermsConditions: Bool!
@IBAction func checkedButtonTapped(_ sender: UIButton) {
if sender.isSelected {
agreedtoTermsConditions = false
sender.isSelected = false
self.proceedButton.isEnabled = false
} else {
agreedtoTermsConditions = true
sender.isSelected = true
self.proceedButton.isEnabled = true
}
}
@IBAction func proceedButtonTapped(_ sender: UIButton) {
createUser(userRole: userRole!, credential: firstCredential!, email: emailString, secureText: confirmPasswordString, termsConditions: agreedtoTermsConditions) { (success, error) in
guard success == true, error == nil else {
if let networkError = error {
if networkError == .AlreadyActivated {
_ = SCLAlertView(appearance: appearance).showError("Already Activated", subTitle: "\(networkError.rawValue)")
}else if networkError == .BadRequest {
_ = SCLAlertView(appearance: appearance).showError("Error", subTitle: "There is something went wrong. Please try again.")
}else {
_ = SCLAlertView(appearance: appearance).showError("Network Error", subTitle: "\(networkError.rawValue)")
}
}
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "hideLoading"), object: nil)
return
}
}
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "nextStep"), object: nil)
}
解决方案
推荐阅读
- telegram - 如何创建 Telegram 频道,用户无法回复公告?
- java - 在运行时实例化泛型的 Java 反射
- node.js - Husky 预提交钩子在提交后完成
- angular - 清除按钮作为指令或角度 2-8 中的组件
- c# - EF Core:在前一个操作完成之前在此上下文上启动了第二个操作
- python-3.x - 正则表达式匹配以斜杠开始和结束
- python - 如何为 LSTM 生成训练样本?
- django - 如何在 Django LoginRequiredMixin 中添加警报消息
- python - 修改numpy数组条件中的值
- c# - 如何使用 AutoMapper 映射具有集合字段的类