#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
для ПУБЛИКАЦИИ.