проблема с номером мобильного телефона при отправке post-запроса на регистрацию

#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? Для строки запроса вам потребуется процентное кодирование знака .