2013-04-25 1 views
2

Я работаю над приложением, в котором я взаимодействую с веб-сервисом большую часть времени. Я получаю проблему, когда я добавлял место где-то, где он конвертирует пространство в% 20 при преобразовании url для запроса. Я googled, но не смог найти какое-либо здоровое решение в соответствии с моим требованием, потому что он менялся только при запросе url. Вот что я делаю.Как преобразовать% 20 ​​в космос в Iphone SDK

url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
    request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]]; 
NSLog(@"Request is : %@", request); 
[[NSURLConnection alloc] initWithRequest:request delegate:self]; 

и NSLog он показал мне 20%, где данное когда-либо пространство. Если кто-то знает, любезно предложите мне лучший способ решить эту проблему. Это будет здорово для меня. Заранее спасибо.

+0

почему и хотите удалить его? он называется кодировкой url, его требуется для запросов url/взаимодействия с веб-службами .. вы хотите удалить этот% 20 из ответа? – vishy

+0

Это вопрос дубликата http://stackoverflow.com/questions/8107303/file-name-nsstring-adds-unnecessary-20-in-space – h4cky

+0

@vishy, ​​потому что я получаю такой же ответ от webservice с «% 20», так как я могу с этим справиться? – josh

ответ

1

Я решил эту проблему с помощью следующей строки после получения ответа от веб-службы.

responseString= [responseString stringByReplacingOccurrencesOfString:@"%20" withString:@" "]; 

Теперь я получаю правильные данные, но я думаю, что это нехорошее решение :). Спасибо за ответы на сообщения.

+0

Да, '-stringByReplacingPercentEscapesUsingEncoding:' лучший выбор –

5

Вы на самом деле преобразования пространства в% 20 с этой инструкцией:

url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]

Но это необходимо для того, чтобы получить правильное NSURLRequest, поскольку некоторые символы нужно это преобразование.

Вы можете переконвертировать их в «нормальных» символов, используя этот другой NSString метод:

– stringByReplacingPercentEscapesUsingEncoding

2

Если вы не хотите,% 20 вместо пространства, то почему вы используете stringByAddingPercentEscapesUsingEncoding?

stringByAddingPercentEscapesUsingEncoding - преобразует пространство% 20

2

удалить% 20 ​​из URL

url = [strFileName stringByRemovingPercentEncoding];