Подтвердить что ты не робот

Escape URL-адрес quesrystring

Я делаю запрос к внешнему API, используя метод GET. По некоторым причинам результаты, которые я получаю, не работают, если searchText содержит пробелы, например. он отлично работает для stackoverflow, но если searchText вводится как "переполнение стека", он не будет работать (предположим, что оба значения присутствуют). Мне нужно сбежать, прежде чем делать запрос URL?

NSString *urlstr = [[NSString alloc] initWithFormat:@"http://mysite.com/xyz?nameBeginsWith=%@", searchText];
4b9b3361

Ответ 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];