#ios #swift #nsurlsession #swift5 #urlsession
#iOS #swift #nsurlsession #swift5 #urlsession
Вопрос:
Вот проблема, когда я нажимаю на кнопку, она выдает мне ответ с сервера, в котором говорится, что номер мобильного телефона недействителен, я думаю, потому что номер телефона должен включать , который относится к ключу страны, и я не знаю, поддерживает ли мое тело в коде ( ) или нет
Обратите внимание на тело с сервера, оно должно быть таким
"username": "asik-tech1s22ss22",
"accountType": "Individual",
"name": "asik-tech",
"mobile": " 201227823311",
"password": "asik2020",
"password_confirmation": "asik2020",
"gender": "Female",
"email": "admin122@wasik-tessch.codm2",
"country": "Egypt"
Мой код :
@IBAction func formNextButton_clicked(_ sender: UIButton) {
let url = URL(string: "http://18.224.184.27:7000/api/v1/users/root-create")!
let body = "email=(companyEmailField.text!.lowercased())amp;name=(companyNameField.text!.lowercased())amp;username=(userNameField.text!.lowercased())amp;password=(passwordField.text!)amp;password_confirmation=(confirmPasswordField.text!)amp;country=(countryField.text!)amp;mobile=(phoneNumberField.text!)amp;gender=(genderField.text!)amp;accountType=(sender.tag)"
print(body)
var request = URLRequest(url: url)
request.httpBody = body.data(using: .utf8)
request.httpMethod = "POST"
// STEP 2. Execute created above request
URLSession.shared.dataTask(with: request) { (data, response, error) in
// access helper class
let helper = Helper()
// error
if error != nil {
helper.showAlert(title: "Server Error", message: error!.localizedDescription, in: self)
return
}
// fetch JSON if no error
do {
// save mode of casting data
guard let data = data else {
helper.showAlert(title: "Data Error", message: error!.localizedDescription, in: self)
return
}
// fetching all JSON received from the server
let json = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as? NSDictionary
print(json as Any)
// error while fetching JSON
} catch {
helper.showAlert(title: "JSON Error", message: error.localizedDescription, in: self)
}
}.resume()
}
Комментарии:
1. Это странно, потому что формат вашего параметра выглядит как JSON (отсутствуют открывающие и закрывающие скобки), но вы используете параметр кодировки url. Это правильно?
2. @Larme ofcaurse Я использую параметры URL-адреса, вот ответ: мое печатное тело и ответ: email=abdallahco@yahoo.comamp;name=abdallahcoamp;username=abdallahuseramp;password=123456amp;password_confirmation=123456amp;country=Egyptamp;mobile= 201094339599amp;gender=Maleamp;accountType=2 Необязательно({ ошибка = { сообщение = «Номер мобильного телефона недействителен»; статус = 400; }; })
3. Может быть, сервер просто не принимает номер мобильного телефона в этом формате? Вы пробовали отправлять без » » или без полного префикса » 20″?
4. номер мобильного телефона на сервере является строковым и принимает эти форматы, и я пробовал без » » или без целого префикса » 20″, как вы сказали, и все равно появляется сообщение об ошибке Номер мобильного телефона недействителен
5. Формат данных в начале вашего вопроса (почти json) и формат, который вы отправляете (тело, содержащее строку запроса), отличаются. Можете ли вы подтвердить, что ожидает ваш сервер? Вы пробовали что-то вроде postman? Для строки запроса вам потребуется процентное кодирование знака .