Программирование, не отправляющее проверочный код на указанный номер телефона

#ios #swift #path

#iOS #swift #путь

Вопрос:

Я пытаюсь выяснить, как отправить код подтверждения пользователю при регистрации для подтверждения его номера. Я пытаюсь следить за онлайн-ресурсами (код ниже), но, похоже, это не работает. Когда я ввожу номер телефона в виде номера ‘xxxyyyzzzz’ или ‘xxx-гггг-zzzz’ (с кодом страны, отформатированным так же, как номер, без ‘ ‘) Я получаю сообщение об ошибке в моей консоли, что номер телефона неправильно отформатирован. Я не уверен, является ли это источником моей проблемы, но на данный момент это кажется наиболее вероятным. Что меня смущает в этом, так это то, что в Интернете мне сказали, что любой из этих форматов будет работать. Любая помощь? Код:

 static let path = Bundle.main.path(forResource: "Config", ofType: "plist")
static let config = NSDictionary(contentsOfFile: path!)
private static let baseURLString = config!["serverUrl"] as! String

@IBOutlet var countryCodeField: UITextField! = UITextField()
@IBOutlet var phoneNumberField: UITextField! = UITextField()

@IBAction func sendVerification(_ sender: Any) {
    if let phoneNumber = phoneNumberField.text,
        let countryCode = countryCodeField.text {
        SignUp2ViewController.sendVerificationCode(countryCode, phoneNumber)
    }
}

static func sendVerificationCode(_ countryCode: String, _ phoneNumber: String) {

    let parameters = [
        "via": "sms",
        "country_code": countryCode,
        "phone_number": phoneNumber
    ]

    let path = "start"
    let method = "POST"

    let urlPath = "(baseURLString)/(path)"
    var components = URLComponents(string: urlPath)!

    var queryItems = [URLQueryItem]()

    for (key, value) in parameters {
        let item = URLQueryItem(name: key, value: value)
        queryItems.append(item)
    }

    components.queryItems = queryItems

    let url = components.url!

    var request = URLRequest(url: url)
    request.httpMethod = method

    let session: URLSession = {
        let config = URLSessionConfiguration.default
        return URLSession(configuration: config)
    }()

    let task = session.dataTask(with: request) {
        (data, response, error) in
        if let data = data {
            do {
                let jsonSerialized = try JSONSerialization.jsonObject(with: data, options: []) as? [String : Any]

                print(jsonSerialized!)
            }  catch let error as NSError {
                print(error.localizedDescription)
            }
        } else if let error = error {
            print(error.localizedDescription)
        }
    }
    task.resume()
}
  

Ответ №1:

Вы вызываете POST, но передаете значения в URL, как будто это GET. Вы должны использовать httpBody для ПУБЛИКАЦИИ.