Escape URL-адрес quesrystring
Я делаю запрос к внешнему API, используя метод GET.
По некоторым причинам результаты, которые я получаю, не работают, если searchText содержит пробелы, например. он отлично работает для stackoverflow, но если searchText вводится как "переполнение стека", он не будет работать (предположим, что оба значения присутствуют). Мне нужно сбежать, прежде чем делать запрос URL?
NSString *urlstr = [[NSString alloc] initWithFormat:@"http://mysite.com/xyz?nameBeginsWith=%@", searchText];
Ответы
Ответ 1
Вы попробовали этот?
NSString *urlstr = [NSString stringWithFormat:@"http://mysite.com/xyz?nameBeginsWith=%@", searchText];
urlstr = [urlstr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
stringByAddingPercentEscapesUsingEncoding
берет строку и возвращает тот же самый процентный процент, который можно использовать в качестве URL-адреса. Таким образом, ответ на ваш вопрос будет да, NSURL
нуждается в правильно экранированной строке для инициализации
Ссылка NSURL
Ответ 2
Теперь метод stringByAddingPercentEscapesUsingEncoding
устарел.
Правильный способ избежать URL-адресов:
NSString * escapedSearchText = [searchText stringByAddingPercentEncodingWithAllowedCharacters: [NSCharacterSet URLQueryAllowedCharacterSet]];
NSString * url = [NSString stringWithFormat: @ " http://example.com/xyz?nameBeginsWith=%@", escapedSearchText];