Конструктор URL не работает с некоторыми символами - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь вызвать php-скрипт из моего приложения, используя URLRequest.Путь Url генерируется в строковой переменной query, и для запроса я конвертирую его следующим образом:

    guard let url = URL(string: query) else {
        print("error")
        return
    }

обычно он работает, но когда запрос содержит такие символы, как ä, ö, ü, ß,ошибка вызвана.Как я могу заставить это работать?

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Разделите ваш URL на две отдельные части:

let baseURLString = "https://www.example.com"
let pathComponent = "áűáeqw"
let fullURL = URL(string: baseURLString)?.appendingPathComponent(pathComponent)
0 голосов
/ 22 мая 2018

Инициализатор URL(string:) не заботится о кодировании String в качестве действительного URL String, он предполагает, что String уже закодирован и содержит только те символы, которые действительны в URL,Следовательно, вы должны выполнить кодировку, если ваш String содержит недопустимые символы URL.Вы можете добиться этого, позвонив по номеру String.addingPercentEncoding(withAllowedCharacters:).

let unencodedUrlString = "áűáeqw"
guard let encodedUrlString = unencodedUrlString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed), let url = URL(string: encodedUrlString) else { return }

. Вы можете изменить CharacterSet в зависимости от того, какая часть вашего URL содержит символы, которые необходимо кодировать. Я просто использовал urlQueryAllowed для презентаций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...