Как отправить NSURL запрос, содержащийся в имени пользователя @ - PullRequest
2 голосов
/ 27 января 2012

Как я могу отправить запрос URL, содержащий символ @ в имени пользователя?
В настоящее время мой код запроса URL выглядит следующим образом:

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://user@exam.com:pwd@example.com"]];

Приведенный выше код извлекает данные из экзамена сайта.com вместо example.com

Как я могу получить данные с example.com с user@exam.com в качестве имени пользователя и pwd в качестве пароля?

Я пыталсяэкранирующие последовательности, такие как \ для экранирования символа @, но они все еще не работают.

Ответы [ 2 ]

2 голосов
/ 27 января 2012

всегда кодируют ваш параметр перед тем, как сделать из них NSURL

 NSString * encodedUsername = (NSString *)CFURLCreateStringByAddingPercentEscapes(
    NULL,
    (CFStringRef)unencodedUsername,
    NULL,
    (CFStringRef)@"!*'();:@&=+$,/?%#[]",
    kCFStringEncodingUTF8 );
0 голосов
/ 27 января 2012

Вы можете кодировать строку перед ее использованием для генерации URL, как показано ниже:

NSString * encodedString = [q stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];

NSURL *requestURL = [NSURL URLWithString:encodedString];
...