stringByAddingPercentEscapesUsingEncoding:
не будет экранировать символы, которые допустимы в URL, например, &
.В этом случае вам нужно избегать их, потому что в противном случае они будут интерпретироваться как часть структуры URL (с указанием нового параметра), а не как часть самого параметра.Используйте CFURLCreateStringByAddingPercentEscapes
вместо:
NSString *escaped = [(NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
(CFStringRef)someURLParameter,
NULL,
(CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8) autorelease];