Будет ли это работать для вас, если вы избежите фигурных скобок?
Этот код:
// escape {} with %7B and %7D
NSURL *url = [NSURL URLWithString:@"http://somesite.com/%7B7B643FB915-845C-4A76-A071-677D62157FE07D%7D.htm"];
NSLog(@"%@", url);
// {} don't work and return null
NSURL *badurl = [NSURL URLWithString:@"http://somesite.com/{7B643FB915-845C-4A76-A071-677D62157FE07D}.htm"];
NSLog(@"%@", badurl);
Результаты:
2011-11-30 21:25:06.655 Craplet[48922:707] http://somesite.com/%7B7B643FB915-845C-4A76-A071-677D62157FE07D%7D.htm
2011-11-30 21:25:06.665 Craplet[48922:707] (null)
Итак, побег, кажется, работает
Вот как вы можете программно избежать URL-адреса:
NSString *escapedUrlString = [unescaped stringByAddingPercentEscapesUsingEncoding: NSASCIIStringEncoding];
РЕДАКТИРОВАТЬ:
В своем комментарии ниже вы сказали, что ваш сервер не будет принимать закодированные фигурные скобки, и были ли другие альтернативы. Во-первых, я бы попытался починить сервер. Если это невозможно ... Я не пробовал это с фигурными скобками и т. Д. ... но уровень ниже сетевых классов NS - это CFNetworking.
Посмотри это:
http://developer.apple.com/library/ios/#documentation/Networking/Conceptual/CFNetwork/CFHTTPTasks/CFHTTPTasks.html#//apple_ref/doc/uid/TP30001132-CH5-SW2
Из этого документа:
CFStringRef url = CFSTR("http://www.apple.com");
CFURLRef myURL = CFURLCreateWithString(kCFAllocatorDefault, url, NULL);
CFStringRef requestMethod = CFSTR("GET");
....
Еще раз, не пробовал, и я бегу. можете попробовать позже, но если слой не работает, ваши первые варианты - переместиться вниз по стеку.
person
bryanmac
schedule
01.12.2011